виктор кинько

Android Jetpack WorkManager

Цель исследования: познакомиться с JetPack WorkManager и понять, стоит ли его использовать в production проектах.
Виктор Кинько
Android-разработчик
WorkManager - новый механизм для выполнения фоновых задач, введённый в официальной библиотеке androidx.
Особенности
  • В зависимости от API устройства использует JobScheduler или AlarmManager, обеспечивая совместимость с ранними версиями android.
  • Гарантирует выполнение фоновой задачи, даже если пользователь полностью закроет приложение и перезагрузит телефон.
  • После создания фоновая задача будет отправлена на выполнение в ближайшем доступном будущем.
  • Можно задать начальные условия для выполнения, такие как наличие подключенного зарядного устройства, наличие безлимитного интернета или выключенный экран.
  • При невозможности выполнения задачи сразу же (как по причинам из ограничений, так и по причинам, возникшим в процессе выполнения задачи) она будет отправлена на перезапуск. Перезапуск задач происходит через какой-то интервал времени, увеличивающийся с каждым перезапуском.
  • Для созданных задач можно задать период повторения. Минимальный период для повторения - пятнадцать минут.
  • Используя функции beginWith и then можно составить цепочку выполнения для нескольких задач. Каждый блок выполняется только после того, как завершились задачи в предыдущем блоке, причем в каждом блоке можно объявить несколько задач. После завершения блока задачи следующего блока получают комбинированные результаты задач предыдущего блока. Способ комбинации можно задать с помощью setInputMerger.
После выпуска Jetpack в разделе Guide to background processing обновилась блок-схема для выбора механизма организации выполнения фоновой задачи, в неё включили WorkManager. Сами разработчики android советуют использовать его когда работу можно отложить и она не предполагает долгую загрузку каких-то данных из сети.
Но в качестве организации определенной логики работы приложения (синхронизация данных, проверка сервисных сообщений или новостей, фоновое сохранение в базу данных) WorkManager подходит. Особенно интересны встроенные проверки на различные системные особенности, которые делают WorkManager инструментом для реакции приложения на определенные состояния системы, а также возможность повторения, не прибегая к созданию сервиса.
Спасибо за внимание!