Android Service
是Android
四大组件之一。
一、Service的声明
一定要在AndroidManifest.xml
中声明。
Service分为如下三类
- foreground service
fg Service执行一些对于用户来说是可感知的操作,如audio应用使用fg service来播放歌曲。 - background service
bg service执行的操作对用户而言是不可感知的。 - bound service
bound service主要是提供c/s接口,允许组件与service进行通信,或者是跨进程的通信。
其实说到底,由于启动方式的不同导致了三种service,
startService
-> background service.
startForegroundService
-> foreground service
bindService
-> bound service
二、Service 生命周期
先从 Service 生命周期看起,Service 的生命周期比较有趣的一点是,它的生命周期会根据调用不同的方法启动有不同的表现,具体有两种形式。
-
通过
startService(Intent intent)
启动 Service
生命周期是这样的:onCreate()
、onStartCommand()
、onDestroy()
-
通过
bindService(Intent intent,ServiceConnection conn,int flags)
启动 Service
生命周期是这样的:onCreate()
、onBind(Intent intent)
、unBindService()
、onDestroy()
方法。
三、生命周期方法
-
onCreate():
首次创建服务时,系统将调用此方法。如果服务已在运行,则不会调用此方法,该方法只调用一次。 -
onStartCommand():
当另一个组件通过调用startService()请求启动服务时,系统将调用此方法。 -
onDestroy():
当服务不再使用且将被销毁时,系统将调用此方法。 -
onBind():
当另一个组件通过调用bindService()与服务绑定时,系统将调用此方法。 -
onUnbind():
当另一个组件通过调用unbindService()与服务解绑时,系统将调用此方法。 -
onRebind():
当旧的组件与服务解绑后,另一个新的组件与服务绑定,onUnbind()返回true时,系统将调用此方法。
手动调用的方法:
手动调用方法
作用
startService()
启动服务
stopService()
关闭服务
bindService()
绑定服务
unbindService()
解绑服务
自动调用的方法:
自动调用方法
作用
onCreat()
创建服务
onStartCommand()
开始服务
onDestroy()
销毁服务
onBind()
绑定服务
onUnbind()
解绑服务
- 生命周期调用
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()
网友评论