我正在制作系统应用。在那里我有一个要求是在启动加载后运行服务而没有一个单一的时间点到APP。 这个问题有点类似于此 System App auto starting 但它没有任何适当的解决方案。 另请阅读BOOT_COMPLETE_RECEIVER仅在应用程序一次启动时才有效。
答案 0 :(得分:0)
使用广播接收器从该广播接收器获取该启动服务之后的操作,并使用START_STICKY服务,以便如果因为某些优先级而不是重新创建它而被杀死,并且如果您想在后台持续运行此服务而不是WAKE_Lock该服务并使用Alarm Manager检查它是否运行。
答案 1 :(得分:0)
在清单
中设置此项<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver
android:name="AutoStart"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
AutoStart类
public class AutoStart extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) {
// Start your service here..
}
}
}
答案 2 :(得分:0)
感谢您的努力,我终于得到了答案。 解: 正如我所说,我的应用程序是系统应用程序,系统工作,即使他们不是立即打开。因为它们没有处于停止状态,即在android 3.1之后强制执行。
其次如果用户应用程序想要这个,那么它的清单就没有任何&#34; android.intent.category.LAUNCHER&#34;活动类别。
同样通过adb,您可以使用此命令启用您的应用 adb shell am broadcast -a com.example.demo.action.LAUNCH --include-stopped-packages(未经测试)
一些很好的链接: http://droidyue.com/blog/2014/01/04/package-stop-state-since-android-3-dot-1/ Static BroadcastReceiver not Working after Installation from ADB