0Pricing
Android Academy · Урок

Периодическая и связанная работа

Повторяйте фоновые задачи и выстраивайте их в последовательность

«Периодическая и связанная работа» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Когда использовать WorkManager
  2. Создание Worker
  3. Ограничения и планирование
  4. Периодическая и связанная работа
← Назад к Android Academy