WorkManager

https://developer.android.com/topic/libraries/architecture/workmanager
https://developer.android.com/develop/background-work/background-tasks/persistent
https://developer.android.com/develop/background-work/background-tasks/persistent/getting-started
https://developer.android.com/develop/background-work/background-tasks/persistent/getting-started/define-work
https://developer.android.com/develop/background-work/background-tasks/persistent/how-to/states
https://developer.android.com/develop/background-work/background-tasks/persistent/how-to/manage-work
https://developer.android.com/develop/background-work/background-tasks/persistent/how-to/chain-work
https://developer.android.com/develop/background-work/background-tasks/persistent/how-to/long-running
https://developer.android.com/develop/background-work/background-tasks/persistent/how-to/observe
https://developer.android.com/develop/background-work/background-tasks/persistent/how-to/update-work
https://developer.android.com/develop/background-work/background-tasks/persistent/threading
https://developer.android.com/develop/background-work/background-tasks/persistent/threading/worker
https://developer.android.com/develop/background-work/background-tasks/persistent/threading/coroutineworker
https://developer.android.com/develop/background-work/background-tasks/persistent/threading/rxworker
https://developer.android.com/develop/background-work/background-tasks/persistent/threading/listenableworker
https://developer.android.com/develop/background-work/background-tasks/persistent/configuration/custom-configuration

WorkManager

Инструмент планирования отложенных асинхронных задач, которые должны надежно выполняться.

• для описания задачи необходимо наследоваться от класса Worker и определить метод doWork. Код внутри метода doWork будет выполнен в рабочем потоке WorkManager.

• работа может быть одноразовой OneTimeWorkRequestBuilder или периодической PeriodicWorkRequestBuilder.

• ограничение на запуск: раз в 15 мин.

• условия запуска: charging, battery level, network/wi-fi connected, device sleep, storage not low.

• поддерживает цепочки задач и параллельное выполнение.

• под капотом JobScheduler (API 23+), GcmNetworkManager/AlarmManager (API 14-22, has Google Play Services).

• использоватьдля критических задач, которые должны пережить смерть процесса приложения.

• хранится в sqlite и может запуститься в указанное время после перезагрузки приложения.

WorkManager. Вопросы на собесе
  1. Чем WorkManager отличается от других инструментов для работы с фоновыми задачами, такими как JobScheduler, AlarmManager, или Services?
  1. Какие есть типы Workers в WorkManager, и в чем их различия?
  1. Как планировать выполнение задач с задержкой или повторением?
  1. Как обеспечить надежность выполнения задач в WorkManager на разных версиях Android?
  1. Какой подход используется для безопасного выполнения фоновых операций в Android 8.0 и выше?

    JobScheduler

    HandlerThread

    AsyncTask

    WorkManager

  1. Какой метод используется для запуска WorkManager?

    executeWork

    enqueue

    startWork

    runTask