我一直在使用 android-job
evernote库。我的工作每30分钟连续运行一次。我一直在使用代码安排工作
new JobRequest.Builder(TrackJob.TAG)
.setPeriodic(TimeUnit.MINUTES.toMillis(30), TimeUnit.MINUTES.toMillis(5))
.setUpdateCurrent(true)
.setPersisted(true)
.build()
.schedule();
现在,当用户单击按钮时,我想停止此作业。我将如何实现这一目标? 提前致谢。
您可以按以下方式进行:
JobManager.instance().cancelAllForTag(your-job-tag);
或
JobManager.instance().cancel(your-job-id)
获得作业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
以供以后使用。我的意思是,如果您想在重新启动应用程序后取消工作。
根据Wiki的说法,Job.TAG
也可以取消该作业。我尝试了它,但无法取消它。(v1.2.5(