在 WorkManager 使用入门中,我们提到 WorkManager 可以代表您异步执行后台工作。该基本实现可满足大多数应用的需求。关于更高级的用例(例如正确处理正在停止的工作),您应了解 WorkManager 中的线程处理和并发机制。
WorkManager 提供了四种不同类型的工作基元:
Worker
是最简单的实现,我们已在前面几节进行了介绍。WorkManager 会在后台线程中自动运行该基元(您可以将它替换掉)。请参阅工作器中的线程处理,详细了解Worker
实例中的线程处理。CoroutineWorker
是为 Kotlin 用户建议的实现。CoroutineWorker
实例公开了后台工作的一个挂起函数。默认情况下,这些实例运行默认的Dispatcher
,但您可以进行自定义。请参阅 CoroutineWorker 中的线程处理,详细了解CoroutineWorker
实例中的线程处理。RxWorker
是为 RxJava 用户建议的实现。如果您有很多现有异步代码是用 RxJava 建模的,则应使用 RxWorker。与所有 RxJava 概念一样,您可以自由选择所需的线程处理策略。请参阅 RxWorker 中的线程处理,详细了解RxWorker
实例中的线程处理。ListenableWorker
是Worker
、CoroutineWorker
和RxWorker
的基类。这个类专为需要与基于回调的异步 API(例如FusedLocationProviderClient
)进行交互并且不使用 RxJava 的 Java 开发者而设计。请参阅 ListenableWorker 中的线程处理,详细了解ListenableWorker
实例中的线程处理。