【问题标题】:Manage API calls with Java [Android]使用 Java [Android] 管理 API 调用
【发布时间】:2017-08-21 08:11:50
【问题描述】:

我正在尝试管理请求调用。这是我的情况。我正在使用retrofit 2RxJava。我在 Fragment 的 onResume 方法中有一个 API 请求调用。当我在我的应用程序中切换选项卡或旋转手机时,onResume 方法会再次被调用,如果调用速度很慢,我会发送两个相同的请求并获得 2 个相同的响应。你知道我该如何防止这种情况发生吗?

如果第一个 API 调用正在进行,我不想发送第二个 API 调用,或者如果调用相同,我不想以某种方式将 2 个响应合并为一个。

谢谢

【问题讨论】:

  • 您可以使用布尔标志,在调用onResume() 后检查一次。
  • 我不太喜欢那个解决方案。如果可能的话,我更喜欢更复杂的方法。

标签: java android rx-java retrofit2


【解决方案1】:

您可以创建一个标志来包装api,并在请求时将其设为false,在响应时将其设为true

private boolean canRequest = true;
void onResume(){
if(canRequest){
   canRequest = false;
   fetchDataUsingRetroFit(new ResponseCallBack(){
       void onResponse(){
         canRequest = true;
       }
    });
}
}

【讨论】:

    【解决方案2】:

    当您使用 rxJava 时,subscribe 函数将返回一个订阅对象,您可以在任何位置(可能在您的 onPause() 中)处理该对象,这意味着我们的活动(或生命周期管理器)将不再关心响应处理订阅对象后。现在您只能期待来自服务器的最新响应...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      • 2010-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多