四大组件之Service

Service

  • Service 是一个在后台执行长时间运行操作而不用提供用户界面的应用组件。
  • Service 生命周期(两种启动方式,两种生命周期)
    正常启动:onCreate -> onStartCommand -> onDestroy
    bind 启动:onCreate -> onBind -> onUnbind -> onDestroy
  • onCreate() 首次启动会调用此方法,后续启动不会调用此方法。可在此方法内部做一些初始化操作,创建线程等。
  • onStartCommand(Intent intent, int flags, int startId) 此方法每次启动服务都会调用。此方法调用后,服务就启动了。startId 会从1开始递增。
  • onDestory() 当服务不再使用且将被销毁时,系统将调用此方法。服务应该实现此方法来清理所有资源,如线程、注册的侦听器、接收器等。
  • onBind() 当其他组件想通过bindService 与服务绑定时,系统将会回调这个方法,在实现中,你必须返回一个IBinder接口,供客户端与服务进行通信,
    必须实现此方法,这个方法是Service 的一个抽象方法,但是如果你不允许绑定的话,返回null 就可以了。

IntentService 的使用

  • IntentService 是Service 的子类。是一个抽象类,必须创建它的子类才能使用 IntentService。
    只需实现 onHandIntent方法即可,该方法会接收每个启动请求的 Intent,使您能够执行后台工作。
  • 它默认为我们开启了一个工作线程,在任务执行完毕后自动停止服务。
  • IntentService 是一个服务,所以优先级比单纯的线程要高很多,所以 IntentService 比较适合执行一些高优先级的后台任务,优先级高不易杀死。
  • IntentService 封装了 HandlerThread 和 Handler。

IntentService 源码解析

请阅读 IntentServiceAnalysis 类。

示例代码请点我

To be continued ...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • [文章内容来自Developers] Service是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。...
    岳小川阅读 886评论 0 7
  • 服务基本上分为两种形式 启动 当应用组件(如 Activity)通过调用 startService() 启动服务时...
    pifoo阅读 1,289评论 0 8
  • Service 一、基础知识 1、定义 服务,属于Android中的计算型组件 2、作用 提供需要在后台长期运行的...
    AndroidMaster阅读 292评论 0 0
  • 一 路人甲A:嘿,听说“无穷”大礼包出来了。这个夏天除了冰镇饮料和西瓜外的追剧神器~ 路人甲B:“无穷”大礼包,那...
    山有乔松阅读 843评论 0 0
  • 小朋友打开冰箱门打算拿根冰淇淋吃,被制止了,哭闹无效后,又重返冰箱,张望了一小会儿后,软糥软糥的问,妈妈,我可以拿...
    MRS_H1987阅读 172评论 0 0