停止预定的定期工作



我一直在使用 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(

相关内容

  • 没有找到相关文章

最新更新