Как убедиться, что WorkManager отменяет мой Worker? - PullRequest
0 голосов
/ 25 декабря 2018

В документации WorkManager упоминается, что отмена работника - это наилучшее усилие

WorkManager делает все возможное, чтобы отменить задачу, но это по своей сути неопределенно - задачавозможно, он уже запущен или завершен, когда вы пытаетесь отменить его

Что если у меня есть сценарий использования, который обязательный , что Worker отменяется при вызове одного из отменяющихметоды?

1 Ответ

0 голосов
/ 27 декабря 2018

Как вы написали, WorkManager может только попытаться отменить работу.В частности, если задача запланирована для запуска и вы отменили ее, WorkManager удалит ее из расписания.

Однако, если задачи уже выполняются, WorkManager не может безопасно прервать ее.Наилучшим вариантом является то, что вы пишете свой класс Worker, заботясь о внешнем аннулировании.Это было рассмотрено в работе с WorkManager докладом (около 15 минут) , записанным на Саммите разработчиков Android 2018.

Чтобы стать хорошим гражданином, вы можете объединить WorkManager в пулиспользуя метод: ListenableWorker.isStopped().Вы можете объединить это с обратным вызовом onStopped, чтобы очистить ваш код, когда вы или ОС запрашиваете остановить задачу.

...