fbpx

Course Content

Total learning: 15 lessons Time: 2 hours

Категории фоновых задач

В этом мини-уроке мы рассмотрим различные категории фоновых задач, чтобы определить какие инструменты лучше всего подходят для той или иной задачи. Для для начала, вспомним, что такое фоновая задача. Задачей в фоне или background-задачей называется логика, относящаяся к приложению, но выполняющаяся не в главном (UI) потоке. Часто, необходимость запустить фоновую задачу возникает, если нужно выполнить какую-то ресурсоёмкую задачу, например, применение фильтров к картинке, или задачу которая отправляет файлы на сервер. Кроме того, могут возникнуть задачи, когда пользователь не взаимодействует с приложением напрямую, однако нужно выполнить запрос в сеть или собрать какие-то данные, например приложение-навигатор или геотрекер для курьера.

Типы background – задач

На данном графике отображены разные категории фоновых задач:

Types of background work

Вертикальная ось отображает время, требуемое для выполнения задачи: точное время (exact timing) или отложенное.

Горизонтальная ось представляет критерий точности выполнения задачи: гарантированное выполнение (Guaranteed Execution) или лучшая попытка (Best-Effort)

Таким образом получаем следующие категории фоновых задач:

  • Задачи, которые нужно выполнить в точное время, чаще всего прямо сейчас (запросы в сеть) для них подойдут: ThreadPools, RxJava, coroutines.
  •  Задачи, которые нужно выполнить в точное время и они должны гарантированно выполниться, для таких задач можно использовать ForegroundService.
  • Отложенные задачи с гарантированным выполнением, для них подойдут: JobSchedulerFirebase JobDispatcher, and Alarm Manager + Broadcast receivers.
  • Задачи, которые нужно отложить но с гарантированным выполнением, для таких задач можно использовать WorkManager