关于踩的坑
Service 启动后会莫名传空 Intent 到 onStartCommand() 方法,由于我需要获取 Intent 内包含的参数,会导致报错。
生命周期
我们一般重写一些方法用于特定的目的,以下是我的偏好列表。
- onCreate() 在服务启动前进行一些常量的初始化操作
- onStartCommand() 用于服务的具体内容,由于服务实例创建后可重复启动,还可通过 Intent 传递参数
- onDestroy() 用于服务销毁时执行的操作
问题的复现
系统未经预料地停止 Service 后即出现报错。
问题的分析
onStartCommand() 需要返回一个整数,以表示系统在该服务被系统意外停止后而进行的操作。
以下是各操作的名称及描述。
- START_NOT_STICKY 在服务被停止后不要重新启动
- START_STICKY 在服务被停止后,以 null 为 Intent 参数,重新调用 onStartCommand()
- START_REDELIVER_INTENT 在服务被停止后,以上个相同的参数,重新调用 onStartCommand()
问题的解决
START_NOT_STICKY 改为 START_REDELIVER_INTENT 即可。
了解 Starx's Home 的更多信息
Subscribe to get the latest posts sent to your email.
0 条评论