Какой тег использовать, чтобы отменить работу - PullRequest
0 голосов
/ 28 мая 2019

PeriodicWorkRequest.Builder имеет метод addTag, enqueueUniquePeriodicWork(TAG, policy, periodicWorkRequest) также имеет тег.

Вопрос в том, какой тег использовать для отмены всего задания MyWorker? Это будет MyWorkerTag или MySchedulerClassTag

PeriodicWorkRequest.Builder builder = new PeriodicWorkRequest.Builder(
                MyWorker.class, 
                PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS, 
                TimeUnit.MILLISECONDS);
        builder.addTag("MyWorkerTag");
        WorkManager.getInstance().enqueueUniquePeriodicWork("MySchedulerClassTag", ExistingPeriodicWorkPolicy.KEEP, builder.build());

1 Ответ

1 голос
/ 28 мая 2019

Оба PeriodicWorkRequest.Builder и OneTimeWorkRequest.Builder включают метод [addTag() 6 , который позволяет вам установить TAG, который вы сможете позжеиспользуется для идентификации набора рабочих запросов для наблюдения или отмены их.

В случае enqueueUniquePeriodicWork(UniqueName, policy, workrequest), первые параметры - это уникальное имя, используемоеWorkManager идентифицирует каждую уникальную работу, и она не связана с TAG, назначенным для WorkRequest.

Итак, чтобы отменить вашего работника, вы должны использовать набор TAG для WorkRequest с использованием метода setTag:

PeriodicWorkRequest.Builder builder = new PeriodicWorkRequest.Builder(
            MyWorker.class, 
            PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS, 
            TimeUnit.MILLISECONDS)
    .addTag("MyWorkerTag")
    .build();

WorkManager.getInstance(context).enqueueUniquePeriodicWork(
            "UniqueName", 
            ExistingPeriodicWorkPolicy.KEEP, 
            builder);

// Later on, when needed
WorkManager.getInstance(context).cancelAllWorkByTag("MyWorkerTag");

Более подробная информация доступна в документации:

...