2017-08-21 8 views
0

リクエストの呼び出しを管理しようとしています。ここに私の状況があります。私はretrofit 2RxJavaを使用しています。私はonResumeメソッドのAPIリクエストを私のフラグメントに持っています。アプリケーションのタブを切り替えるか、電話機を回転させると、onResumeメソッドが再度呼び出され、呼び出しが遅い場合は同じリクエストが2回送信され、2つの同じ応答が返されます。どのように私はこれを防ぐことができますか考えていますか?JavaでAPI呼び出しを管理する[Android]

最初のAPI呼び出しが進行中の場合や、呼び出しが同じ場合は2つの応答を1つにマージする場合は、2番目のAPI呼び出しを送信しません。

あなたがapiを包むためのフラグを作成し、要求しながらfalse作ることができますおかげ

+0

booleanフラグを使うことができます。これは、 'onResume()'が呼び出された後に一度だけチェックされます。 – hsm59

+0

私はその解決策が本当に好きではありません。私はそれが可能ならもっと洗練された方法を好むだろう。 – Oya

答えて

1

true応答

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

にあなたがrxJavaを使用していると、サブスクライブ機能を使うと、サブスクリプション・オブジェクトを返します。 (あなたのonPause()にあるかもしれない)どこにでも処分することができます。つまり、私たちの活動(またはライフサイクルマネジャー)は、サブスクリプションオブジェクトを処分した後の応答についてもう気にしません。サーバーからの最新の応答しか期待できません。 。

関連する問題