Начиная с Android 8 сервисы, с помощью которых ранее работали фоновые задачи, были сильно урезаны в правах и возможностях.

Сейчас в Android есть инструмент, позволяющий запускать задачи в фоне. Он называется WorkManager.

Чтобы использовать WorkManager, нужно его подключить:

 

Основные классы:

  • Worker — собственно, сама задача. Нужно расширить этот класс и в методе doWork() описать задачу
  • WorkRequest — задание. Должен содержать, как минимум, класс, расширяющий Worker, но можно досыпать деталей: условия или время выполнения. Имеет уникальный сгенерированный идентификатор, с помощью которого можно, например, отменить задачу. Содержит вспомогательные классы:
    • Builder — вспомогательный класс для построения
    • Constraints — построитель ограничений
  • WorkManager — ставит процессы в очередь и управляет ими. Объект WorkRequest передаётся в WorkManager, чтобы поставить задачу в очередь. WorkManager планирует задачу таким образом, чтобы распределить нагрузку на системные ресурсы, соблюдая при этом указанные ограничения.
  • WorkInfo — содержит информацию о конкретной задаче. WorkManager предоставляет LiveData для каждого объекта WorkRequest. LiveData содержит объект WorkInfo. Наблюдая за этими данными можно определить текущий статус задачи и получить любые возвращенные значения после ее завершения.

Итак, объявление класса:

Теперь это можно запустить:

Создание ограничений:

Отмена задачи:

Добавление тегов (каждая задача может иметь их несколько):

Повторяюшиеся задачи:

Вот, вкратце, и всё.

Добавить комментарий

Закрыть меню