JobScheduler不重复工作

时间:2018-01-14 09:17:49

标签: android android-jobscheduler

我正在使用JobScheduler.setPeriodic()来重复我的JobIntentService。它第一次工作但从不重复。在Android 7.0上运行

ConcurrentCheck.java

int mdelaymilles  = 30000;
JobScheduler jobScheduler = (JobScheduler) mActivity.getSystemService(JOB_SCHEDULER_SERVICE);
        ComponentName componentName = new ComponentName(mActivity, ConcurrentCheckService.class);
        JobInfo jobInfo = new JobInfo.Builder(JOB_ID, componentName)
                .setPeriodic(mdelaymilles)
                .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
                .build();
        int resultCode = jobScheduler.schedule(jobInfo);
        if (resultCode == JobScheduler.RESULT_SUCCESS) {
            Log.d(LOG_TAG, "Job scheduled!");
            Intent intent = new Intent();
            intent.putExtra(LAST_POSITION, lastPosition);
            JobIntentService.enqueueWork(mActivity, ConcurrentCheckService.class, JOB_ID, intent);
        } else {
            Log.d(LOG_TAG, "Job not scheduled");
        }

1 个答案:

答案 0 :(得分:9)

可安排工作的最短时间为15分钟。如果设置为小于15分钟的值,则作业将使用15分钟。

请参阅JobInfo中的MIN_PERIOD_MILLIS

另外,请在代码中看到此comment

  

查询定期计划作业允许的最小间隔。   在安排作业时尝试声明一个较小的句点   将导致一个仍然是定期的作业,但将与此一起运行   有效期。你的间隔的重复任务将需要一些   其他服务,警报管理器可能适合你。