Урок 31. WorkManager. Последовательность выполнения задач.

Ответить
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Урок 31. WorkManager. Последовательность выполнения задач.

Сообщение damager82 » 21 июн 2018, 10:24

В этом уроке рассматриваем, как запускать задачи в определенном порядке




Click here to read this article!
Последний раз редактировалось damager82 05 мар 2020, 13:08, всего редактировалось 6 раз.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

An12
Сообщения: 2
Зарегистрирован: 25 июн 2021, 15:29

Re: Урок 31. WorkManager. Последовательность выполнения задач.

Сообщение An12 » 20 сен 2022, 10:08

Любопытно, что цепочка заданий возвращает статус "успех", даже если все задания провалились.
Например:

Код: Выделить всё

OneTimeWorkRequest work1 = createWork("work1");
UUID id1 = work1.getId();

OneTimeWorkRequest work2 = createWork("work2");
UUID id2 = work2.getId();
        
 mWorkManager
                .beginWith(work1)
                .then(work2)
                .enqueue()
                .getState().observe(this, state -> showInfo("Цепочка: "+state.toString()));
                
mWorkManager.getWorkInfoByIdLiveData(id1).observe(this, workInfo -> {
            showWorkInfo(workInfo);
});

mWorkManager.getWorkInfoByIdLiveData(id2).observe(this, workInfo -> {
            showWorkInfo(workInfo);
});
выдаст:
Цепочка: IN_PROGRESS
Цепочка: SUCCESS
work1: ENQUEUED
work2: BLOCKING
work1: RUNNING
work1: FAILED
work2: FAILED

Кажется, понял причину: цель "цепочки" - объединить задачи, чего она успешно и достигает в любом случае.
А вот любопытно: можно ли как-то отслеживать "суммарный" статус, чтобы ошибка любого задания в цепочке приводил к общей ошибке? Я не нашёл такого метода ни в WorkContinuation, ни при объединении задач через begin*(), then()

Ответить