Android中Service类中onStartCommand返回值介绍
来源:互联网 发布:为什么开不了淘宝店铺 编辑:程序博客网 时间:2024/06/05 02:47
- START_STICKY
- START_NOT_STICKY
- START_REDELIVER_INTENT
- START_STICKY_COMPATIBILITY
- 系统默认策略
- Service的onStartCommand策略
- IntentService的onStartCommand策略
Android中调用startService(Intent intent)会调用该Service对象的onStartCommand(Intent intent, int flags, int startId)方法,然后在onStartCommand方法中做一些处理。这个函数有一个int的返回值,根据官方文档说明,改返回值有四种情况,下下面就对这四种返回值做一一介绍
START_STICKY
如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。随后系统会尝试重新创建service,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand(Intent,int,int)方法。如果在此期间没有任何启动命令被传递到service,那么参数Intent将为null。
START_NOT_STICKY
“非粘性的”。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务。
START_REDELIVER_INTENT
重传Intent。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统会自动重启该服务,并将Intent的值传入。
START_STICKY_COMPATIBILITY
START_STICKY的兼容版本,但不保证服务被kill后一定能重启。
系统默认策略
Service的onStartCommand策略
public int onStartCommand(Intent intent, int flags, int startId) { onStart(intent, startId); return mStartCompatibility ? START_STICKY_COMPATIBILITY : START_STICKY; }
可见,默认的策略是START_STICKY,支持服务意外终止重新创建的。
IntentService的onStartCommand策略
IntentService 不应该重新实现 onStartCommand ,而是去复写 onHandleIntent .
@Override public int onStartCommand(Intent intent, int flags, int startId) { onStart(intent, startId); return mRedelivery ? START_REDELIVER_INTENT : START_NOT_STICKY; } public void setIntentRedelivery(boolean enabled) { mRedelivery = enabled; }
可见, IntentService 默认只支持两种返回值 START_REDELIVER_INTENT 或者 START_NOT_STICKY ,并且由 setIntentRedelivery 方法决定,默认是 START_NOT_STICKY ,不重新创建。
- Android中Service类中onStartCommand返回值介绍
- Android中Service类onStartCommand返回值
- Android中Service类onStartCommand的返回值问题
- Android中Service类onStartCommand的返回值问题
- Android中Service类onStartCommand的返回值问题
- Android中Service类onStartCommand的返回值
- Android中Service类onStartCommand的返回值问题
- Android中Service类onStartCommand的返回值问题
- Android中Service类onStartCommand的返回值问题
- Android中Service类onStartCommand的返回值问题
- Android中Service类onStartCommand的返回值问题
- Android中Service类onStartCommand的返回值问题
- Android中Service类onStartCommand的返回值问题
- Android中Service类onStartCommand的返回值问题
- Android中Service类onStartCommand的返回值问题
- Android中Service类onStartCommand的返回值问题
- Android中Service类onStartCommand的返回值问题
- Android中Service类onStartCommand的返回值问题
- 数学建模Word排版——题注、尾注、交叉引用
- 用80x86汇编语言编程:分类统计字符个数
- 基于51单片机的99-00倒计时秒表
- 合庆房子购买记录
- 汇编语言编程:按照凯撒密码的规则加密
- Android中Service类中onStartCommand返回值介绍
- 80x86 汇编语言:在屏幕右上角显示系统时间
- 云存储平台之运营
- 汇编语言编程:1 + 2 + 3 + 4 + 5 + …… + n
- matlab---画图
- 汇编编程问题:X + Y + Z => 显示
- 重学C++ (九) 重载操作符与转换
- 晒晒新买的“百度旋转音箱”
- 比较两个无符号数的大小