Периодическая и связанная работа
Повторяйте фоновые задачи и выстраивайте их в последовательность
«Периодическая и связанная работа» — бесплатный урок Android Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 4 уроков всего.
Периодическая и связанная работа
Помимо одноразовых задач, WorkManager может повторять работу по расписанию и объединять несколько рабочих компонентов в последовательность. В этом уроке рассматриваются оба варианта.
PeriodicWorkRequest
Для повторяющейся работы используйте PeriodicWorkRequestBuilder, указав интервал повторения. WorkManager повторно запускает рабочий компонент через каждый интервал.
val periodic = PeriodicWorkRequestBuilder<SyncWorker>(
repeatInterval = 1,
repeatIntervalTimeUnit = TimeUnit.HOURS
).build()Минимальный интервал — 15 минут
Минимальный интервал повторения составляет 15 минут. Запросы с меньшим интервалом автоматически ограничиваются 15 минутами. Это помогает экономить заряд батареи: WorkManager не предназначен для запуска с точностью до секунды.
Периодическая работа не выполняется точно по времени
Интервал является ориентиром, а не точным таймером. Система может запустить работу позже, чтобы объединить задания и сэкономить энергию. Не полагайтесь на неё для задач, критичных ко времени.
Добавление уникальной периодической работы в очередь
Используйте enqueueUniquePeriodicWork, чтобы при каждом запуске приложения не создавать новые копии одного и того же периодического задания.
WorkManager.getInstance(context).enqueueUniquePeriodicWork(
"daily_sync",
ExistingPeriodicWorkPolicy.KEEP,
periodic
)Что такое объединение в цепочку
Объединение в цепочку запускает рабочие компоненты в заданном порядке: шаг B начинается только после успешного завершения шага A. Выходные данные одного шага становятся входными данными следующего.
beginWith и then
Начните цепочку с помощью beginWith и добавляйте последовательные шаги с помощью then. Вызовите enqueue, чтобы отправить в очередь всю цепочку.
WorkManager.getInstance(context)
.beginWith(compressRequest)
.then(uploadRequest)
.then(cleanupRequest)
.enqueue()Данные проходят через цепочку
Выходные данные Data одного рабочего компонента передаются следующему как входные. Поэтому compressRequest может вернуть путь к файлу, а uploadRequest считывает его через inputData.
Параллельные шаги в цепочке
Можно запустить несколько рабочих компонентов параллельно, передав список в beginWith; следующий вызов then будет ждать завершения всех компонентов.
WorkManager.getInstance(context)
.beginWith(listOf(downloadA, downloadB))
.then(mergeRequest)
.enqueue()Ошибка останавливает цепочку
Если какой-либо рабочий компонент возвращает Result.failure(), оставшиеся шаги цепочки отменяются. Однако retry() приостанавливает цепочку, пока этот шаг не завершится успешно.
Сочетание с ограничениями
Каждый запрос в цепочке и каждый периодический запрос может иметь собственные ограничения. Например, только для шага загрузки можно потребовать сеть без тарификации, а сжатие разрешить выполнять в любое время.
Быстрая проверка
Проверьте, насколько хорошо Вы поняли периодическую и связанную работу.
Итоги
Вы изучили периодическую и связанную работу:
PeriodicWorkRequestBuilderповторяет работу с минимальным интервалом 15 минут, но не точно по времени;beginWith().then()объединяет рабочие компоненты в последовательность;- выходные данные передаются от одного шага к следующему, а списки запускаются параллельно;
- ошибка отменяет цепочку, и для каждого шага можно задать собственные ограничения.
Вы завершили курс по WorkManager.
Часто задаваемые вопросы
Урок «Периодическая и связанная работа» бесплатный?
Да — полный текст урока «Периодическая и связанная работа» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 4 уроков всего.
Чему я научусь в уроке «Периодическая и связанная работа»?
Повторяйте фоновые задачи и выстраивайте их в последовательность Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Android Academy?
Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Периодическая и связанная работа»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Android Academy?
Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Когда использовать WorkManager
- Создание Worker
- Ограничения и планирование
- Периодическая и связанная работа