zoukankan      html  css  js  c++  java
  • 关于Android的Service知识点,你知道吗?

    目录

    学习Service相关知识点:

    1. 概述;
    2. Service生命周期;
    3. Service的基本用法;
    4. 服务。
    • 问:达叔,今日工作累吗?

    • 答:累啊,那么问你,你知道Android中的
      Service(服务)吗?~

    • 问:哥,这么干的吗?

    • 答:呵呵,是的,~

    概述:

    在Android中Service是一个在后台执行长时间运行操作,而不需要和用户交互的应用程序组件。主要是用来后台处理网络事务,播放音乐,执行文件操作和content provider进行交互等。

    • 答:简要地说,Service的运行不依赖任何用户界面,是一直保持在后台运行的。
      如果当某个应用程序被关闭时,所有依赖于该应用的服务也就会停止了~
    • 问:哦~

    对于,Service服务的分两种类:

    一:Started Service,二:Bound Service。(英文理解:开启服务,绑定服务)。这两种服务各有各的特色。不过在理解之前,先看看它们的生命周期情况(图片来源于官方):

    可以看出两种启动方式区别:

    Call to startService -> onCreate() -> onStartCommand() -> Service running -> onDestroy()

    Call to bindService() -> onCreate() -> onBind() -> onUnbind() -> onDestroy()

    从中可以看出:

    一:使用startService()方法启动服务,调用onStartCommand()方法启动Service,启动Service的组件与Service没有联系,所以关闭组件,后台的Service也在运行中。

    二:使用bindService()方法绑定来启动服务,调用onBind()方法来启动,将启动Service的组件和Service绑定在一起,关闭组件则Service会停止。

    • 问:那有什么要注意的吗?
    • 答:其实这两种方法并不冲突,使用startService()启动Service后,可以再使用bindService()方法进行绑定
      到时,你在调用stopService()或自身stopSelf()方法和unBindService()方法就行,注重创建与销毁,才能更好理解~

    Service的基本用法:

    创建一个Service类,重写 onCreate(),onStartCommand(),oonDestroy(),这三种通常使用的方法。

    定义一个MyService的类,代码如下:

    补充说明:

    Service(服务)默认是执行主线程,不是默认运行在子线程,和进程中。如果要进行耗时操作,那么就要在开启子线程操作和使用异步消息处理机制。

    不然会出现主线程被(ANR)的情况,ANR为应用无反应。

    在创建Service时,系统会自动在配置文件对MyService进行注册:

    可利用Intent可以启动和停止Service:

    • 问:对于Service内容可以回顾一下吗?

    • 答:额,一:对于Started Service,当一个组件调用startService()方法请求服务时,系统会调用它的生命周期方法,启动后,会在后台无限期运行下去,直到完成工作调用stopSelf()或stopService()方法来终止服务的~

    • 问:嗯,好的~

    • 答:额,二:对于Bound Service的启动,当其它组件调用bindService()进行绑定服务时,系统会调用它的生命周期方法,,其中有客户端绑定到Service,那么客户端通过IBinder接口与服务进行通信,客户端通过unbindService()方法进行断开连接,调用onUnbind()方法解绑定,系统调用onDestroy()方法来销毁~

    对于掌握Service(服务)知识点。
    Service用于后台执行用户指定的操作。
    学习不是速成,内容理解,多练多用多查多看即可。

    喜欢本文的朋友们
    欢迎关注,点赞
    收看更多精彩内容

  • 相关阅读:
    序列JSON数据和四种AJAX操作方式
    jquery.validate和jquery.form.js实现表单提交
    JQuery Validate使用总结1:
    HOWTO: Include Base64 Encoded Binary Image Data (data URI scheme) in Inline Cascading Style Sheets (CSS)(转)
    SharePoint 2007 使用4.0 .Net
    动态IP解决方案
    取MS CRM表单的URL
    从Iframe或新开的窗口访问MS CRM 2011(转)
    Toggle or Hidden MS CRM Tab
    Windows 2008下修改域用户密码
  • 原文地址:https://www.cnblogs.com/dashucoding/p/11932596.html
Copyright © 2011-2022 走看看