2017-08-21 65 views
0

我正在嘗試管理請求調用。這是我的情況。我正在使用retrofit 2RxJava。我在我的Fragment中的onResume方法中有一個API請求調用。當我在應用程序中切換選項卡或旋轉手機時,onResume方法會再次被調用,如果調用速度較慢,則發送兩個相同的請求並獲得2個相同的響應。你有什麼想法我可以如何防止這一點?用Java管理API調用[Android]

如果第一個API調用正在進行,或者以某種方式將2個響應合併爲一個(如果調用相同),我不想發送第二個API調用。

感謝

+0

您可以使用一個布爾標誌,在調用onResume()後調用它。 – hsm59

+0

我不太喜歡這個解決方案。如果可能的話,我更喜歡更復雜的方式。 – Oya

回答

1

可以用於包裝api創建一個標誌,並使其false同時要求和true上響應

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

當您使用rxJava,該認購函數會返回一個對象申購你可以在任何地方放置(可能在你的onPause()),這意味着我們的活動(或生命週期管理器)在處理訂閱對象之後不會再有任何麻煩。現在,您只能期待最新的服務器響應。 。