使用Android中的Retrofit和LiveData执行序列一系列异步Web请求

时间:2017-08-23 17:15:24

标签: android retrofit android-livedata

所以我有三个ModelManager来自 MainActivity ,每次调用都不会相互依赖。

所以我们假设第一个是retrofit web requests,第二个是getImages(),最后一个是getCountry()

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

所以我在这里有两个选择

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

那么我有什么方法可以做到这一点。 。我没有使用 RxAndroid

2 个答案:

答案 0 :(得分:2)

您可以使用MediatorLiveData。对于每个请求,请声明LiveData boolean标记,并且每次请求完成检查MediatorLiveData中的所有三个标记,如果它们全部true设置MediatorLiveData {{1}然后观察它并进入下一个活动

您可以从documentation

获取详细信息和代码示例

答案 1 :(得分:0)

  1. 所有itemList对象都使用ObservableDataset

  2. 实现
  3. MainActivity实施Observer。

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

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