如何启动一个没有Activity的Service
介绍
我们APP在安装到手机上后,如果不启动一次是无法接收到开机等静态广播的(安卓3.1版本以后),发现在3.1版本中增加了限制,系统的package manager增加了对处于”stopped state”应用的管理,指的是安装后从来没有启动过和被用户手动强制停止的应用,为Intent增加了两个Flag:
- FLAG_INCLUDE_STOPPED_PACKAGES:表示包含未启动的App
- FLAG_EXCLUDE_STOPPED_PACKAGES:表示不包含未启动的App
所以我们不启动一次是接收不到系统所发送的广播的,不过我们可以通过其它应用发送的广播来唤醒我们的Service,我们只要发送的广播中在Intent中增加包含停止状态的标记即可,如下:
Intent intent = new Intent();
intent.setAction("com.ttxz.start.my.service");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
sendBroadcast(intent);
- 这样在另一个APP中静态注册即,在接收到之后就可以去开启自己的Service