我想在每天晚上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);
}
答案 0 :(得分:0)
如果您需要在晚上9点准确准确发送警报,AlarmManager
可能仍然是您的最佳选择。如果设备处于打ze模式,则用JobScheduler
安排的作业仅在维护窗口期间执行。
如here所述:
AlarmManager API是框架为计划任务提供的另一个选项。当应用需要在特定时间发布通知或触发警报时,此API很有用。
尽管强烈建议不要使用AlarmManager
的{{1}}方法,但是如果您的应用确实依赖于精确时间警报,那是您的最佳选择。
另一方面,如果可以根据维护时段和优先级存储桶来延迟警报,则最好使用作业,并且代码似乎可以解决问题。