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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值