Service的生命周期
https://www.jianshu.com/p/8d0cde35eb10
生命周期常用方法
在Service的生命周期里,常用的有:
-
4个手动调用的方法
手动调用方法 作用 startService() 启动服务 stopService() 关闭服务 bindService() 绑定服务 unbindService() 解绑服务 -
5个自动调用的方法
内部自动调用的方法 作用 onCreate() 创建服务 onStartCommand() 开始服务 onDestroy() 销毁服务 onBind() 绑定服务 onUnbind() 解绑服务
生命周期方法的具体介绍
-
startService():启动服务;自动调用的方法:onCreate(),onStartCommand()
注:若一个Service被startService多次启动,那么onCreate()也只会调用一次;整个生命周期的方法里,只有onStartCommand()可以多次调用、其他职能调用一次;onStartCommand()调用次数等于startService调用次数,onStartCommand()必须返回一个整数,描述系统在杀死服务后应该如何继续运行
a. START_NOT_STICKY:不会重建服务,除非还存在未发送的intent。当服务不再是必须的,并且应用程序能够简单地重启那些未完成的工作时,这是避免服务运行最安全的选项
b. START_STICKY:重建服务 并且调用onStartService(),但不会再次送入上一个intent,而是用null intent来调用onStartService()。除非还有启动服务的intent未发送完,那么这些剩下的intent会继续发送
c. START_REDELIVER_INTENT:重建服务并且用上一个已送过的intent调用onStartService()。任何未发送的intent也都会依次送入
-
stopService():关闭service服务,自动调用的方法:onDestory()
注:启动且绑定一个service,若在无解绑的前提下调用stopService()是无法停止服务的
-
bindService():绑定Service服务,自动调用的方法:onCreate(),onBind()
-
unbindService():解绑Service服务,自动调用的方法:onUnbind()、onDestory()
常见的生命周期使用
-
启动服务(只使用startService())
-
绑定服务(只使用BindService())
-
先启动再绑定服务(startService、BindService)
注:
关于操作Service
- startService、stopService只能开启 & 关闭Service,但无法操作Service
- bindService、unBindService除了绑定Service,还能操作Service
关于Service何时销毁
- startService开启的Service,调用者退出后Service仍然存在
Service,还能操作Service
关于Service何时销毁
- startService开启的Service,调用者退出后Service仍然存在
- BindService开启的Service,调用者退出后,Service随着调用者退出销毁