@lacredin
Программист

Как очистить статус операции WorkManager после прочтения в android?

Приветствую!

При использовании WorkManager я столкнулся с проблемой того, что статус операции не удаляется поле прочтения.

Вот инициализации операции
private fun saveCashCommandSchedule() {
        val constraints = Constraints.Builder()
                .setRequiredNetworkType(NetworkType.CONNECTED)
                .build()
        val work = OneTimeWorkRequestBuilder<WorkSynchronizeCashSchedule>()
                .setConstraints(constraints)
                .build()
        WorkManager.getInstance().enqueueUniqueWork("send_cash_schedule", ExistingWorkPolicy.REPLACE, work)
    }


Вот я подключая слушателя для отслеживания состояния операции

fun subscribeWorkScheduleCash(lifecycle: Lifecycle) {
        WorkManager.getInstance().getWorkInfosForUniqueWorkLiveData("send_cash_schedule").observe({
            lifecycle
        }, { states ->
            states?.forEach {
                if (it != null && it.state == WorkInfo.State.SUCCEEDED) {
                    //TODO вот этой строки хотелось бы избежать
                   // WorkManager.getInstance().pruneWork()
                    loadData()
                    return@observe
                }
            }
        })
    }


Каждый раз, когда я подключаю слушателя, старый статус всплывает. Мне надо его как-то удалить.
Использование WorkManager.getInstance().pruneWork() не выход, так как он удаляет все статусы всех операций, которые завершили свою работу.

Подскажите, пожалуйста, как убрать статусы.
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ответы на вопрос 1
Попробуйте добавить вызов keepResultsForAtLeast с длительностью 1 миллисекунду в OneTimeWorkRequestBuilder.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы