【发布时间】:2018-08-17 11:47:52
【问题描述】:
我已经使用JobScheduler 有一段时间了。一个典型的例子是:
JobScheduler 触发onStartJob() 方法。这会启动某种任务,其中可能包括其他几个后台进程(获取设备位置、进行网络调用等)。然后,一旦任务完成或失败,我使用接口回调JobService。
但是,使用WorkManager 似乎基本上没有办法异步运行工作。我知道WorkManager 将在单独的线程中运行 Workers,但似乎单个工作人员必须同步运行?如果是这样,我将不得不重新设计我的应用程序中的许多逻辑,除非我遗漏了什么。
假设我有一个天气应用程序,它会使用 JobScheduler 运行 JobService,它执行以下操作:
onStartJob() --> 获取设备位置 --> 对本地天气数据进行 API 请求 -> 写入数据库 -> 调用 jobFinished()
WorkManager 的预期实现是将多个工人链接在一起吗?如果是这样,你如何将数据从一个 Worker 传递给另一个?同样,对于任何稍微复杂的应用来说,迁移到WorkManager API 似乎都是一项艰巨的任务。
【问题讨论】:
-
有documentation on chaining work 加上一个whole set of documentation pages 关于WorkManager 中的线程,包括如何handle callback-based asynchronous work。
标签: android android-jobscheduler android-workmanager