在特定时间安排日常工作

时间:2019-01-20 10:30:25

标签: android android-jobscheduler

我想在每天晚上9点发出警报,并且计划使用定期工作计划程序代替警报管理器,以解决打mode模式问题

我想每天晚上9点发出警报,如何使用作业调度程序完成此操作?

下面是我的代码,这是安排周期性任务的正确方法吗?

static JobScheduler jobScheduler;
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public static void scheduleJob(Context context) {
    Log.d("JobSchedularTest","scheduleJob.........");

    ComponentName componentName = new ComponentName(context, MyJobService.class);
    JobInfo.Builder builder = new JobInfo.Builder(100, componentName);
    // diff_nine_pm_time_in_milli = difference between current time and 9PM time
    builder.setMinimumLatency(diff_nine_pm_time_in_milli);
    builder.setOverrideDeadline(diff_nine_pm_time_in_milli);
    jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
    jobScheduler.schedule(builder.build());
}

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public static void stopJob(){
    if(jobScheduler!=null)
        jobScheduler.cancel(100);
}

1 个答案:

答案 0 :(得分:0)

如果您需要在晚上9点准确准确发送警报,AlarmManager可能仍然是您的最佳选择。如果设备处于打ze模式,则用JobScheduler安排的作业仅在维护窗口期间执行。

here所述:

  

AlarmManager API是框架为计划任务提供的另一个选项。当应用需要在特定时间发布通知或触发警报时,此API很有用。

尽管强烈建议不要使用AlarmManager的{​​{1}}方法,但是如果您的应用确实依赖于精确时间警报,那是您的最佳选择。

另一方面,如果可以根据维护时段和优先级存储桶来延迟警报,则最好使用作业,并且代码似乎可以解决问题。