В статье Начало работы с 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.