【问题标题】:Migrating from JobScheduler to WorkManager seems like a massive undertaking. Any advice+从 JobScheduler 迁移到 WorkManager 似乎是一项艰巨的任务。任何建议+
【发布时间】:2018-08-17 11:47:52
【问题描述】:

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

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

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

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

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

WorkManager 的预期实现是将多个工人链接在一起吗?如果是这样,你如何将数据从一个 Worker 传递给另一个?同样,对于任何稍微复杂的应用来说,迁移到WorkManager API 似乎都是一项艰巨的任务。

【问题讨论】:

标签: android android-jobscheduler android-workmanager


【解决方案1】:

我认为您正在寻找的是ListenableWorker。它正是那个界面。当您解决ListenableFuture 时,我们会为您完成工作,而不是您最终必须致电jobFinished()

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 2014-07-19
    相关资源
    最近更新 更多