Потоки в WorkManager

В статье Начало работы с WorkManager мы упоминали, что WorkManager выполняет фоновую работу асинхронно от вашего имени. Базовая реализация подходит для большинства приложений. Для более сложных вариантов использования, например правильной обработки остановки работы, вам следует изучить потоки и параллелизм в WorkManager.

WorkManager предоставляет четыре типа примитивов:

  • Worker – это самый простой вариант, который мы уже рассматривали. WorkManager автоматически запускает его в фоновом потоке (который вы можете переопределить). Подробнее о потоках в экземплярах Worker читайте в статье Потоки в Worker.
  • CoroutineWorker – рекомендуемый вариант для пользователей Kotlin. Экземпляры CoroutineWorker предоставляют функцию приостановки для фоновой работы. По умолчанию они выполняют стандартный запрос Dispatcher, который можно настроить. Подробнее о потоках в экземплярах CoroutineWorker рассказывается в статье Потоки в CoroutineWorker.
  • RxWorker – рекомендуемая реализация для пользователей RxJava. RxWorker следует использовать, если большая часть существующего асинхронного кода смоделирована в RxJava. Как и во всех концепциях RxJava, вы можете выбрать стратегию потоковой передачи по своему усмотрению. Подробнее о потоках в экземплярах RxWorker читайте в статье Потоки в RxWorker.
  • ListenableWorker – базовый класс для Worker, CoroutineWorker и RxWorker. Она предназначена для разработчиков Java, которым нужно взаимодействовать с асинхронными API на основе обратных вызовов, такими как FusedLocationProviderClient, и которые не используют RxJava. Подробнее о потоках в экземплярах ListenableWorker читайте в статье Потоки в ListenableWorker.