美文网首页
Android Service

Android Service

作者: hanxianshe_9530 | 来源:发表于2019-11-01 21:14 被阅读0次

Android ServiceAndroid四大组件之一。

一、Service的声明

一定要在AndroidManifest.xml中声明。
Service分为如下三类

  1. foreground service
    fg Service执行一些对于用户来说是可感知的操作,如audio应用使用fg service来播放歌曲。
  2. background service
    bg service执行的操作对用户而言是不可感知的。
  3. bound service
    bound service主要是提供c/s接口,允许组件与service进行通信,或者是跨进程的通信。

其实说到底,由于启动方式的不同导致了三种service,
startService -> background service.
startForegroundService -> foreground service
bindService -> bound service

二、Service 生命周期

先从 Service 生命周期看起,Service 的生命周期比较有趣的一点是,它的生命周期会根据调用不同的方法启动有不同的表现,具体有两种形式。

  1. 通过 startService(Intent intent) 启动 Service
    生命周期是这样的: onCreate()onStartCommand()onDestroy()

  2. 通过 bindService(Intent intent,ServiceConnection conn,int flags) 启动 Service
    生命周期是这样的:onCreate()onBind(Intent intent)unBindService()onDestroy() 方法。

Service生命周期图

三、生命周期方法

  • onCreate():
    首次创建服务时,系统将调用此方法。如果服务已在运行,则不会调用此方法,该方法只调用一次。
  • onStartCommand():
    当另一个组件通过调用startService()请求启动服务时,系统将调用此方法。
  • onDestroy():
    当服务不再使用且将被销毁时,系统将调用此方法。
  • onBind():
    当另一个组件通过调用bindService()与服务绑定时,系统将调用此方法。
  • onUnbind():
    当另一个组件通过调用unbindService()与服务解绑时,系统将调用此方法。
  • onRebind():
    当旧的组件与服务解绑后,另一个新的组件与服务绑定,onUnbind()返回true时,系统将调用此方法。
手动调用的方法:

手动调用方法
作用

startService()
启动服务

stopService()
关闭服务

bindService()
绑定服务

unbindService()
解绑服务

自动调用的方法:

自动调用方法
作用

onCreat()
创建服务

onStartCommand()
开始服务

onDestroy()
销毁服务

onBind()
绑定服务

onUnbind()
解绑服务

  1. 生命周期调用
    1)启动Service服务
    单次:startService() —> onCreate() —> onStartCommand()
    多次:startService() —> onCreate() —> onStartCommand() —> onStartCommand()
    2)停止Service服务
    stopService() —> onDestroy()
    3)绑定Service服务
    bindService() —> onCreate() —> onBind()
    4)解绑Service服务
    unbindService() —> onUnbind() —> onDestroy()
    5)启动绑定Service服务
    startService() —> onCreate() —> onStartCommand() —> bindService() —> onBind()
    6)解绑停止Service服务
    unbindService() —> onUnbind() —> stopService() —> onDestroy()
    7)解绑绑定Service服务
    unbindService() —> onUnbind(ture) —> bindService() —> onRebind()

相关文章

网友评论

      本文标题:Android Service

      本文链接:https://www.haomeiwen.com/subject/gdkhyctx.html