Android Service 的 onStartCommand 返回值

来源:互联网 发布:数字英才网招玻璃美工 编辑:程序博客网 时间:2024/05/20 05:10

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
原创粉丝点击