Dus*_*Dus 11 android android-alarms android-jobscheduler
我想在每天的特定时间开始JobScheduler ,并在3小时后完成.
我有20分钟和3小时触发工作的部分,但是在JobInfo.Builder课程中,没有选择在准确的时间启动工作.
在JobInfo.Builder类概述中,没有任何内容可以设置启动JobScheduler的时间.
显然,我不想整天运行它,并检查时间是否匹配,这将耗尽更多的电池而不是需要,并且编程很糟糕.
我正在考虑在我指定的时间发出警报并触发这项工作,但这似乎有点矫枉过正.
JobInfo.Builder builder = new JobInfo.Builder(NIGHT_SYNC_JOB_ID,
new ComponentName(context, NightSyncDataJobService.class));
//Job starts at 11pm, and ends at 2am. Running every 20 minutes.
builder.setPersisted(true); //Job scheduled to work after reboot
builder.setPeriodic(Consts.ONE_MINUTE * 20);
JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(builder.build());
Run Code Online (Sandbox Code Playgroud)
如果您有任何其他问题的解决方案,那么触发此JobScheduler的AlarmManger旁边将非常感激.
我通过以下方式实现了它(没有AlarmManager),创建了一个新的Job(JOB_ID显然有一个独特的),并告诉JobScheduler它在将来的某个时间使用它setOverrideDeadline().
这是一个可能有用的片段:
private JobInfo getJobInfoForFutureTask(Context context,
long timeTillFutureJob) {
ComponentName serviceComponent = new ComponentName(context, SchedulerService.class);
return new JobInfo.Builder(FUTURE_JOB_ID, serviceComponent)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_NONE)
.setOverrideDeadline(timeTillFutureJob)
.setRequiresDeviceIdle(false)
.setRequiresCharging(false)
.setPersisted(true)
.build();
}
Run Code Online (Sandbox Code Playgroud)
确保计算要安排任务的正确时间偏移量,并从中删除任何现有的作业ID JobScheduler.
| 归档时间: |
|
| 查看次数: |
8112 次 |
| 最近记录: |