首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否停止计划的定期作业?

是否停止计划的定期作业?
EN

Stack Overflow用户
提问于 2018-02-08 23:22:04
回答 2查看 1.7K关注 0票数 1

我一直在使用android-job Evernote库。我有一个每30分钟连续运行的作业。我一直在使用代码来调度作业

代码语言:javascript
复制
new JobRequest.Builder(TrackJob.TAG)
                .setPeriodic(TimeUnit.MINUTES.toMillis(30), TimeUnit.MINUTES.toMillis(5))
                .setUpdateCurrent(true)
                .setPersisted(true)
                .build()
                .schedule();

现在,我想在用户单击按钮时停止此作业。我将如何实现这一点?提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-02-19 12:51:28

您可以按如下方式进行操作:

JobManager.instance().cancelAllForTag(your-job-tag);

JobManager.instance().cancel(your-job-id)

票数 0
EN

Stack Overflow用户

发布于 2018-05-22 17:06:52

获取作业ID的

代码语言:javascript
复制
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();  

按按钮取消

代码语言:javascript
复制
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)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48688936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档