Остановить запланированное периодическое задание?

Я использую библиотеку android-job Evernote. У меня есть работа, которая выполняется непрерывно каждые 30 минут. Я использовал код для планирования задания

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

Теперь я хочу остановить это задание, когда пользователь нажимает кнопку. Как я этого добьюсь? Заранее спасибо.


person Maheshwar Ligade    schedule 08.02.2018    source источник
comment
github.com/evernote/android-job/issues/84   -  person Aswin P Ashok    schedule 08.02.2018
comment
Пожалуйста, обратите внимание на эти ответы   -  person exploitr    schedule 22.05.2018


Ответы (2)


Вы можете сделать это следующим образом:

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

or

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

person Michel Fortes    schedule 19.02.2018

Получение идентификатора задания:

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. Я пробовал, но не смог отменить. (В1.2.5)

person exploitr    schedule 22.05.2018