【问题标题】:Stop the scheduled Periodic Job?停止预定的定期作业?
【发布时间】:2018-07-19 05:26:21
【问题描述】:

我一直在使用android-job Evernote 库。我的工作每 30 分钟连续运行一次。我一直在使用代码来安排工作

new JobRequest.Builder(TrackJob.TAG)
                .setPeriodic(TimeUnit.MINUTES.toMillis(30), TimeUnit.MINUTES.toMillis(5))
                .setUpdateCurrent(true)
                .setPersisted(true)
                .build()
                .schedule();

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

【问题讨论】:

标签: android android-5.0-lollipop android-7.0-nougat android-jobscheduler android-job


【解决方案1】:

获取作业 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)

【讨论】:

    【解决方案2】:

    你可以这样做:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      • 2011-05-25
      • 2019-12-17
      相关资源
      最近更新 更多