什么时候调用 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;
}

如果没有安排,那就安排吧。