我已经在我的项目中实现了Job scheduler,如果应用程序在后台或应用程序被杀死,它可以正常工作。但是如果重启设备则无法正常工作。我已经包括了
JobInfo.Builder mBuilder = new JobInfo.Builder(TASK_ID, mComponentName);
mBuilder.setPersisted(true);
在我的构建器和
中 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
在应用程序清单文件中。这就是我将我的服务添加到清单
的方式 <service
android:name="com.xxx.xxxx.service.MyJobService"
android:permission="android.permission.BIND_JOB_SERVICE" />
还有什么要包括在内吗?
提前致谢
答案 0 :(得分:5)
注册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");
...
}
}
}
用户在您的应用中运行一次任何活动后,您将在以后的所有启动后收到BOOT_COMPLETED
广播。
答案 1 :(得分:0)
您需要调用setPersisted(boolean isPersisted)方法。
您可以在文档https://developer.android.com/reference/android/app/job/JobInfo.Builder.html#setPersisted(boolean)
中找到它答案 2 :(得分:0)
我知道这是一个老问题,您可能已经有了解决方案,但问题可能是JobService缓存了具有权限的应用程序的UUID。您将需要重新安装您的应用程序,它会没事的。