Course Content
-
WorkManager для управления фоновыми задачами
- Категории фоновых задач
- Зачем нужен WorkManager?
- Для каких задач подходит WorkManager?
- Описание проекта – Геотрекер
- Анатомия WorkManager. Основные классы
- Создание проекта и добавление необходимых зависимостей
- Создание простой БД на базе Room для хранения координат
- Просмотр информации в БД с помощью Flipper
- Пример разового выполнения WorkManager используя OneTimeWorkRequest
- Критерии выполнения задачи: наличие Wi-Fi, достаточный заряд батареи и другие
- Политики разрешения конфликтов для фоновых задач и режимы повторения
- Получаем координаты через FusedLocationProviderClient
- Сохраняем координаты в базу данных Room
- Запускаем геотрекер раз в 15 минут с помощью PeriodicWorkRequest
- Полезные ссылки и материалы
Зачем нужен WorkManager?
Введение. Или зачем нужен WorkManager?
Для начала, давайте разберёмся, для чего нужен WorkManager. С каждым выходом новой версии Android, разработчики операционной системы всё больше и больше уделяли внимание оптимизации времени работы батареи телефона.
Начиная с Android 6.0 Marshmallow разработчики Google предложили так называемый Doze mode – то есть такой режим в котором если устройство лежит без движения и без зарядки, спустя час оно переходит в специальный режим, когда почти все приложения перестают выполнять какую-то фоновую работу и потреблять батарею. Кроме того, начиная с Android 8.0 Oreo работа сервисов также была ограничена.
Таким образом, до 2018 года, для выполнения работы в фоне разработчику необходимо было разбираться во всех деталях работы фоновых задач для каждой версии операционной системы.
WorkManager облегчает такие задачи и под капотом имеет реализацию, основанную на базе JobScheduler, Firebase JobDispatcher, Alarm Manager + Broadcast receivers. В зависимости от версии операционной системы, доступности Google Play сервисов на телефоне WorkManager выберет подходящую реализацию и выполнит задачу. Кроме того, что вам теперь не нужно продумывать все нюансы реализации работы фоновых задач, WorkManager имеет удобный интерфейс, скрывающий все сложности, позволяя разработчику сконцентрироваться на бизнес-логике задачи.
Далее, мы рассмотрим, для каких задач лучше всего подходит WorkManager