关于Android中开机启动服务
2016-11-21 10:49
302 查看
最近在项目中需要实现开机启动一个应用中的服务功能,果断在manifest中注册静态广播Receiver,
记得在manifest中添加相应权限,
运行后,强制停止应用,然后重启。结果开机后并没有启动服务。检查代码没什么问题,一番纠结后,终于找到了原因:
原来,在3.1之后,系统的PackageManager增加了对处于“stopped state”应用的管理,这里的stopped和Activity生命周期中的stop状态是两回事,
PackageManager中“stopped state”指的是安装后从来没有启动过或者被用户强制停止的应用,系统中通过两个flag
FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES ,来标识一个intent是否激活处于“stopped
state”的应用,当两个Flag都不设置或者都进行设置的时候,采用的是FLAG_INCLUDE_STOPPED_PACKAGES的效果。有了上面的新机制之后,Google觉得给所有的广播intent默认加上FLAG_EXCLUDE_STOPPED_PACKAGES会非常的Cool,能在一定程度上避免流氓软件、病毒啊干坏事,还能提高效率,就导致了RECEIVE_BOOT_COMPLETED广播如果用户没有运行过应用或者在设置中强行停止了应用,就不会接收到BOOT_COMPLETED广播。
<receiver android:name=".broadcast.RestartServiceReceiver"> <intent-filter> <action android:name="com.centerm.lklapplicationshop.restartservice"/> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver>
记得在manifest中添加相应权限,
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
运行后,强制停止应用,然后重启。结果开机后并没有启动服务。检查代码没什么问题,一番纠结后,终于找到了原因:
原来,在3.1之后,系统的PackageManager增加了对处于“stopped state”应用的管理,这里的stopped和Activity生命周期中的stop状态是两回事,
PackageManager中“stopped state”指的是安装后从来没有启动过或者被用户强制停止的应用,系统中通过两个flag
FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES ,来标识一个intent是否激活处于“stopped
state”的应用,当两个Flag都不设置或者都进行设置的时候,采用的是FLAG_INCLUDE_STOPPED_PACKAGES的效果。有了上面的新机制之后,Google觉得给所有的广播intent默认加上FLAG_EXCLUDE_STOPPED_PACKAGES会非常的Cool,能在一定程度上避免流氓软件、病毒啊干坏事,还能提高效率,就导致了RECEIVE_BOOT_COMPLETED广播如果用户没有运行过应用或者在设置中强行停止了应用,就不会接收到BOOT_COMPLETED广播。
相关文章推荐
- 关于android下 mqtt服务开机无法启动的问题及某些mqtt问题
- Android 4.0关于开机启动服务
- 注册表中关于开机自动运行程序和自动启动服务的是哪几个键?(转)
- android 开机启动服务
- android 开机启动服务。
- Android 开机自动启动服务
- 关于在android中service开发的IllegalArgumentException错误和服务无法启动的解释(转)
- Android开机自动启动服务
- Android学习篇章35-Service基础-广播开机启动服务
- android 开机启动服务。
- android 开机自启动服务或应用
- android开机启动服务
- android开机启动无界面服务线程
- android中如何实现开机启动某些服务,activity等
- Android 开机启动服务
- android 开机启动服务。
- android中开机启动服务案例
- (转)关于在android中service开发的IllegalArgumentException错误和服务无法启动的解释
- Android 开机自动启动服务
- android实现开机启动服务