您的位置:首页 > 其它

Service的启动模式以及onStartCommand的重载

2017-09-04 15:23 316 查看

Service启动顺序

startService调用

在启动Service的时候,如果是第一次启动Service调用顺序为onCreate->onStartCommand->onStart;销毁Servie时调用onDestroy函数;

在开启Service的时候如果Service已经被创建则直接调用onStartCommand函数,不再调用onCreate函数

bindService调用

bindService调用时,若Service没有被创建调用bindService首先会onCreate然后再onBind,正常的调用顺序是首先startService再bindService

在销毁时首先unbind函数,之后再stopService

onStartCommand函数

Service如果在调用stopService以及stopSelf之前停止,即发生异常停止了服务,服务会再次自动启动,在启动时会首先调用onStartCommand函数再调用onStart函数,因此在onStartCommand函数中返回一个返回值,用来表示服务的启动方式。

函数体:onStartCommand(Intent intent, int flags, int startId)此函数有一个返回值,返回值的值可能是START_STICKY、START_NOT_STICKY、START_REDELIVER_INTENT。

START_STICKY:在服务被杀死后保留服务的状态为初始状态,但不保留传入的Intent,重新启动服务调用onStartCommand时,如果没有其他启动命令传递到Service中的话,此时Intent的值为空

START_NOT_STICKY:在服务被意外杀死时,不会重新启动服务

START_REDELIVER_INTENT:服务被意外杀死后,会自动重启服务,重新启动时会保留Intent

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: