警报关闭时如何取消调度程序作业
How to cancel scheduler job when alarm fire off
我在一个警报中有 2 个警报我正在启动每 30 分钟发送一次通知的作业调度程序服务,在第二个警报时我想取消这个计划的作业服务,我也在主线程上发送通知我没有'在工作服务中创建单独的线程,这是我的代码:
这是我的 jobinfo 对象,当开始警报广播触发时我正在执行此方法
public static void Scheduler(Context context){
float duration = NotificationUtills.NotificationCounter();
ComponentName componentName =
new ComponentName(context , ClsJobService.class);
JobInfo.Builder builder = new JobInfo.Builder(0, componentName)
.setPeriodic(5000);
JobScheduler jobScheduler =
(JobScheduler) context.getSystemService (Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(builder.build());
}
这是工作服务
public class ClsJobService extends JobService {
@Override
public boolean onStartJob(JobParameters params) {
//logic for building and sending notification
NotificationUtills.notificationBuilder(getApplicationContext());
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
return false;
}
}
不单独创建线程可以吗?
另外,当第二个警报响起时,我该如何取消这个预定的作业?
Is it alright not to create separate thread?
是的,只要您的 Notification
构建逻辑不执行任何可能会损害应用程序响应能力的耗时操作。
Also how can i cancel this scheduled job when second alarm fires off?
可以调用JobScheduler
的cancel()
方法。
它以作业 ID 作为参数。这必须与您传递给 JobInfo.Builder
构造函数(代码中的 0
)的作业 ID 相同。
我在一个警报中有 2 个警报我正在启动每 30 分钟发送一次通知的作业调度程序服务,在第二个警报时我想取消这个计划的作业服务,我也在主线程上发送通知我没有'在工作服务中创建单独的线程,这是我的代码:
这是我的 jobinfo 对象,当开始警报广播触发时我正在执行此方法
public static void Scheduler(Context context){
float duration = NotificationUtills.NotificationCounter();
ComponentName componentName =
new ComponentName(context , ClsJobService.class);
JobInfo.Builder builder = new JobInfo.Builder(0, componentName)
.setPeriodic(5000);
JobScheduler jobScheduler =
(JobScheduler) context.getSystemService (Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(builder.build());
}
这是工作服务
public class ClsJobService extends JobService {
@Override
public boolean onStartJob(JobParameters params) {
//logic for building and sending notification
NotificationUtills.notificationBuilder(getApplicationContext());
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
return false;
}
}
不单独创建线程可以吗?
另外,当第二个警报响起时,我该如何取消这个预定的作业?
Is it alright not to create separate thread?
是的,只要您的 Notification
构建逻辑不执行任何可能会损害应用程序响应能力的耗时操作。
Also how can i cancel this scheduled job when second alarm fires off?
可以调用JobScheduler
的cancel()
方法。
它以作业 ID 作为参数。这必须与您传递给 JobInfo.Builder
构造函数(代码中的 0
)的作业 ID 相同。