Android Service 的 onStartCommand 返回值

Service的onStartCommand方法的返回值决定了系统重建被kill掉的Service 采取什么策略。


1.START_STICKY:如果Service在start之后(从onStartCommand返回)被kill掉,在重新创建此Service之后会直接调用onStartCommand方法,如果这时候没有新的Intent(在系统主动重建此Service之前没有startService被调用)作为参数传给onStartCommand,系统会传一个null


2.START_NOT_STICKY:如果Service在start之后(从onStartCommand返回)被kill掉,并且没有新的Intent传入(没有新的startService调用),系统不会重新创建Service
适用于不需要恢复的工作,Service不会被重新创建,只在客户端调用的时候才会创建


3.START_REDELIVER_INTENT:如果Service在start之后(从onStartCommand返回)被kill掉,系统在重新创建Service之后会调用onStartCommand方法,把上次传给onStartCommand方法的Intent(假设为X)再次传给onStartCommand方法,如果这个X暂时没机会处理,那么X会被保留,直到相应的stopSelf(id)方法被调(出现保留的情况,比如:这个Service不是系统重新创建的,而是Service被kill掉之后,外部调用了startService,这时候X不会立即得到使用,而是在外部的Intent都处理之后,系统再去处理保留的X,传给onStartCommand;在这之前,如果通过相应id调用stopSelf(id)方法,这个保留的X将被放弃;此ID是之前和X一起传给onStartCommand方法的)

所以onStartCommand方法不会接收到null的Intent

4.START_STICKY_COMPATIBILITY:
START_STICKY的兼容版本,但是不会调用onStartCommand方法

是Android2.0之前onStartCommand的默认返回值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值