我现在已经使用了 JobScheduler 一段时间了 . 一个典型的例子是:

JobScheduler 触发 onStartJob() 方法 . 这开始了某种任务,可能包括其他几个后台进程(获取设备位置,进行网络呼叫等) . 然后,一旦任务完成或失败,我就使用接口回调 JobService .

但是,使用 WorkManager 似乎基本上没有办法异步运行工作 . 我知道 WorkManager 将在一个单独的线程中运行Workers但看起来像一个单独的工作者必须同步运行?如果是这样的话我就错过了什么 .

假设我有一个天气应用程序,它将使用 JobScheduler 运行 JobService 执行以下操作:

onStartJob() - >获取设备位置 - >为本地天气数据发出API请求 - >写入数据库 - >调用jobFinished()

使用 WorkManager ,是否可以将多个工作者链接在一起?如果是这样,您如何将数据从一个工作者传递到另一个工作者?同样,对于任何稍微复杂的应用程序来说,迁移到 WorkManager API似乎都是一项艰巨的任务 .