我一直在使用android-job Evernote库。我有一个每30分钟连续运行的作业。我一直在使用代码来调度作业
new JobRequest.Builder(TrackJob.TAG)
.setPeriodic(TimeUnit.MINUTES.toMillis(30), TimeUnit.MINUTES.toMillis(5))
.setUpdateCurrent(true)
.setPersisted(true)
.build()
.schedule();现在,我想在用户单击按钮时停止此作业。我将如何实现这一点?提前谢谢。
发布于 2018-02-19 12:51:28
您可以按如下方式进行操作:
JobManager.instance().cancelAllForTag(your-job-tag);
或
JobManager.instance().cancel(your-job-id)
发布于 2018-05-22 17:06:52
获取作业ID的:
int jobId = new JobRequest.Builder(DemoSyncJob.TAG)
.setExecutionWindow(30_000L, 40_000L)
.setBackoffCriteria(5_000L, JobRequest.BackoffPolicy.EXPONENTIAL)
.setRequiresCharging(true)
.setRequiresDeviceIdle(false)
.setRequiredNetworkType(JobRequest.NetworkType.CONNECTED)
.setExtras(extras)
.setRequirementsEnforced(true)
.setUpdateCurrent(true)
.build()
.schedule(); 按按钮取消:
Button _button = new Button(this) ;
_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
JobManager.instance().cancel(jobId);
}
});备注:
您可以使用SharedPreference存储jobId以供以后使用。我的意思是,如果您想在应用程序重新启动后取消作业。
根据维基百科的说法,这项工作也可以在Job.TAG.I尝试但无法取消的情况下取消。(V1.2.5)
https://stackoverflow.com/questions/48688936
复制相似问题