什么时候调用 JobScheduler?
When to call the JobScheduler?
我想每天调用一次方法来在我的应用程序中生成僵尸。
以下方法应创建执行此操作的 JobScheduler。
我的问题是:这个方法是只调用一次还是每次都在应用程序启动时调用?
public static void startZombieSpawnService(Context context) {
JobScheduler jobScheduler = (JobScheduler) context.getSystemService(context.JOB_SCHEDULER_SERVICE);
long intervaloDeRepeticao = TimeUnit.DAYS.toMillis(1);
jobScheduler.schedule(new JobInfo.Builder(1, new ComponentName(context, ZombieSpawnService.class)).setPeriodic(intervaloDeRepeticao).setp.build());
}
如果您拥有 RECEIVE_BOOT_COMPLETED 权限,那么您还可以使用 JobInfo.Builder() 中的 setPersisted(true)。然后你只需要调用它一次,它也会在重启后持续存在。
否则,当您的应用启动时,您可以使用此功能检查您的作业是否已安排:
public static boolean isJobScheduled(Context mContext, int jobID) {
JobScheduler mScheduler = (JobScheduler)
mContext.getSystemService(Context.JOB_SCHEDULER_SERVICE);
for (JobInfo jobInfo : mScheduler.getAllPendingJobs()) {
if (jobID == jobInfo.getId()) {
return true;
}
}
return false;
}
如果没有安排,那就安排吧。
我想每天调用一次方法来在我的应用程序中生成僵尸。
以下方法应创建执行此操作的 JobScheduler。
我的问题是:这个方法是只调用一次还是每次都在应用程序启动时调用?
public static void startZombieSpawnService(Context context) {
JobScheduler jobScheduler = (JobScheduler) context.getSystemService(context.JOB_SCHEDULER_SERVICE);
long intervaloDeRepeticao = TimeUnit.DAYS.toMillis(1);
jobScheduler.schedule(new JobInfo.Builder(1, new ComponentName(context, ZombieSpawnService.class)).setPeriodic(intervaloDeRepeticao).setp.build());
}
如果您拥有 RECEIVE_BOOT_COMPLETED 权限,那么您还可以使用 JobInfo.Builder() 中的 setPersisted(true)。然后你只需要调用它一次,它也会在重启后持续存在。
否则,当您的应用启动时,您可以使用此功能检查您的作业是否已安排:
public static boolean isJobScheduled(Context mContext, int jobID) {
JobScheduler mScheduler = (JobScheduler)
mContext.getSystemService(Context.JOB_SCHEDULER_SERVICE);
for (JobInfo jobInfo : mScheduler.getAllPendingJobs()) {
if (jobID == jobInfo.getId()) {
return true;
}
}
return false;
}
如果没有安排,那就安排吧。