小编Arn*_*bee的帖子

WorkManager如何安排对REST API的GET请求?

我已经看过WorkManager的codelab以及这里的一些例子,但是我看到的代码中的所有内容都与在设备上本地工作或上传到服务器有关,而不是下载数据和响应收到的数据.在开发人员指南中,它甚至说,"例如,一个应用程序可能需要不时地从网络上下载新资源",所以我认为这对于这项任务来说是完美的.我的问题是,如果WorkManager可以处理以下场景,如果没有,那么处理它的正确工具是什么:

  1. 安排一天在后台运行一次的工作
  2. 工作是从REST API进行数据提取(如果可能,将其发布到LiveData对象).
  3. 数据返回时,检查它是否比本地数据更新.
  4. 通知用户新数据可用.

我的worker类看起来像这样:

public class MyWorker extends Worker {

@NonNull
@Override
public WorkerResult doWork() {
    lookForNewData();
    return WorkerResult.SUCCESS;
}

public void lookForNewData() {
    MutableLiveData<MyObject> liveData = new MutableLiveData<>();

    liveData.observe(lifeCycleOwner, results -> {
        notifyOnNewData(results);
    })

    APILayer.getInstance().fetchData(searchParams, liveData)
}
Run Code Online (Sandbox Code Playgroud)

我的问题当然是LiveData对象无法观察,因为没有活动或片段可以作为其LifecycleOwner.但即使我使用来自API的回调来响应到达的数据,我的工作人员已经发布它是成功的,它可能不会继续回调,对吧?所以我知道这种方法是完全错误的,但是我看不到任何使用WorkManager获取数据的代码

请帮助一个正确的解决方案和一些示例代码或一些链接,如果它可以处理这种工作或其他更合适的话,可以使用WorkManager.

android android-workmanager

15
推荐指数
1
解决办法
3216
查看次数

标签 统计

android ×1

android-workmanager ×1