Как объяснено в Руководстве WorkManager и в вашем вопросе, когда вы ставите в очередь новый UniqueWorkRequest, используя REPLACE
в качестве существующей рабочей политики, это остановит предыдущего работника, который в данный момент работает.
То, что происходит с вашим работником, зависит от того, как вы его реализовали (Worker
, CoroutineWorker
или другой ListenableWorker
подкласс) и как вы справляетесь с остановками и увольнениями] 2 .
Это означает, что ваш работник должен "совместно" завершить sh и очистить вашего работника:
В случае уникальной работы вы явно поставили в очередь новый WorkRequest с Существующая рабочая политика ЗАМЕНА. Старый WorkRequest немедленно считается прекращенным.
При этих условиях ваш работник получит вызов на номер ListenableWorker.onStopped()
. Вы должны выполнить очистку и совместно завершить работу sh вашего работника на случай, если ОС решит закрыть ваше приложение.