在WorkManager 入门中,我们提到 WorkManager 会代表您异步执行后台工作。基本实现满足了大多数应用的需求。对于更高级的用例,例如正确处理工作停止,您应该了解 WorkManager 中的线程处理和并发。
WorkManager 提供了四种不同类型的工作原语
Worker
是最简单的实现,也是您在前面几节中见过的。WorkManager 会自动在后台线程上运行它(您可以覆盖)。阅读Worker 中的线程处理,了解有关Worker
实例中线程处理的更多信息。CoroutineWorker
是 Kotlin 用户推荐的实现。CoroutineWorker
实例公开了一个用于后台工作的挂起函数。默认情况下,它们运行一个默认的Dispatcher
,您可以自定义。阅读CoroutineWorker 中的线程处理,了解有关CoroutineWorker
实例中线程处理的更多信息。RxWorker
是 RxJava 用户推荐的实现。如果您的许多现有异步代码都使用 RxJava 建模,则应使用 RxWorker。与所有 RxJava 概念一样,您可以自由选择所需的线程处理策略。阅读RxWorker 中的线程处理,了解有关RxWorker
实例中线程处理的更多信息。ListenableWorker
是Worker
、CoroutineWorker
和RxWorker
的基类。它适用于必须与基于回调的异步 API(例如FusedLocationProviderClient
)交互且不使用 RxJava 的 Java 开发者。阅读ListenableWorker 中的线程处理,了解有关ListenableWorker
实例中线程处理的更多信息。