【问题标题】:Execution of Sequence a chain of async web requests with Retrofit and LiveData in android在 android 中使用 Retrofit 和 LiveData 执行序列异步 Web 请求链
【发布时间】:2017-08-23 17:15:23
【问题描述】:

所以我有三个 retrofit web requestsMainActivity 调用,每个调用不会相互依赖。

假设第一个是getImages(),第二个是getCountry(),最后一个是getUser()

但是有一个条件是在所有这些请求都成功执行之前不应该加载下一个活动。

所以我这里有两个选择

1) 创建嵌套请求并在每个请求上执行 onSuccess 回复 。这似乎可靠,但因此这些是我需要的异步调用 优化时间。
2)创建一个变量并增加它 每次成功通话,这种方法似乎可以节省时间,但我不确定 这是一个很好的做法。

那么有什么办法可以让我完成这项工作。 .而且我没有使用 RxAndroid

【问题讨论】:

    标签: android retrofit android-livedata


    【解决方案1】:

    您可以使用MediatorLiveData。对于每个请求声明一个LiveData boolean 标志,每次请求完成时检查MediatorLiveData 中的所有三个标志,如果它们都true 设置MediatorLiveData true 然后观察它并进行下一个活动

    您可以从documentation获取详细信息和代码示例

    【讨论】:

      【解决方案2】:
      1. 所有 itemList 对象都使用 ObservableDataset 实现

      2. MainActivity 实现观察者。

      3. 在 OnChange 方法中; 当加载城市/图像/用户时,isLoadedCities/isLoadedImages/isLoadedUsers 设置为 true,然后触发 inValidate()。

      4. inInvalidate 方法; 检查所有 IsLoaded 标志是否为真,然后触发 doSomething()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-20
        • 1970-01-01
        • 2020-11-25
        • 1970-01-01
        相关资源
        最近更新 更多