从 JobScheduler 迁移到 WorkManager 似乎是一项艰巨的任务。任何建议+

Migrating from JobScheduler to WorkManager seems like a massive undertaking. Any advice+

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

JobScheduler 触发 onStartJob() 方法。这将启动某种任务,可能包括其他几个后台进程(获取设备位置、进行网络调用等)。然后,我使用一个接口在任务完成或失败后回调 JobService

然而,WorkManager 似乎基本上没有办法 运行 异步工作。我知道 WorkManager 将 运行 Workers 在一个单独的线程中,但似乎单个 worker 必须同步 运行?如果是这样,我将不得不在我的应用程序中重做很多逻辑,除非我遗漏了什么。

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

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

使用 WorkManager 时,是否打算将多个 worker 链接在一起?如果是这样,您如何将数据从一个 Worker 传递给另一个?同样,对于任何稍微复杂的应用程序来说,迁移到 WorkManager API.

似乎都是一项艰巨的任务

我想你要找的是 ListenableWorker。它具有完全相同的界面。您不必在最后调用 jobFinished(),我们会在您解析 ListenableFuture 时为您完成工作。

https://developer.android.com/reference/androidx/work/ListenableWorker.html#startWork() 类似于您的 onStartJob