我已经在我的项目中实现了作业调度程序,并且在应用程序处于后台或应用程序被终止的情况下它工作正常。但如果设备重新启动,它就不起作用。我已经包括
JobInfo.Builder mBuilder = new JobInfo.Builder(TASK_ID, mComponentName);
mBuilder.setPersisted(true);
在我的 build 者和
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
在应用程序 list 文件中。这就是我将服务添加到 list 的方式
<service
android:name="com.xxx.xxxx.service.MyJobService"
android:permission="android.permission.BIND_JOB_SERVICE" />
还有什么需要补充的吗?
提前致谢
最佳答案
注册一个 BroadCastReciever
用于检测 BOOT_COMPLETED
。
<receiver android:name="com.example.startuptest.StartUpBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
在您的 BroadcastReceiver 中:
public class StartUpBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
Log.d("startuptest", "StartUpBootReceiver BOOT_COMPLETED");
...
}
}
}
一旦用户在您的应用中运行任何 Activity 一次,您将在所有 future 启动后收到 BOOT_COMPLETED
广播。
关于Android 作业调度程序不会在重启时保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42084112/