Как долго WorkManager сохраняет невыполненные задания? - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть сценарий, в котором я хочу повторить недавно неудачные задания, но workmanager возвращает все неудачные задания. Есть ли способ удалить старые рабочие места?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Для OneTimeWorkRequest, ОТКАЗ - это окончательный статус. Это не собирается быть повторно выполненным. Для PeriodicWorkRequest это другое. Проверьте эти блоги:

Также это видео охватывает это.

Вернуться к вашему вопросу:

Есть ли способ удалить старые задания?

Да!

Используйте WorkManager#pruneWork(), чтобы удалить задания в конечном состоянии (УСПЕШНО, НЕ УКАЗАНО и ОТМЕНЕНО). Как видно из документов, этот метод следует использовать с осторожностью.

Имейте в виду, что при этом удаляются все задания, находящиеся в состоянии сбоя. Способ удалить старые задания - это сократить время, в течение которого WorkRequests хранятся в базе данных WorkManager, устанавливая пользовательское значение срока хранения при их создании. Для этого используйте WorkRequest#keepResultsForAtLeast(long duration, TimeUnit timeUnit)

0 голосов
/ 07 ноября 2019

Определенно есть способ отменить работы с WorkManager.

Чтобы отменить работы с WorkManager, вам просто нужно сохранить UUID работ.

И вы сможете отменить любую работу по этому коду -

WorkManager.getInstance(context).cancelWorkById(UUID);
...