2016-03-05 135 views
1

我正在取出由凌空數據我的問題是,有些時候,用戶按下後退按鈕請求繼續和應用程序崩潰的活動結束,然後響應即將到來,所以我呼籲回按凌空取消請求

RequestQueue.cancelAll(requesttag) 
i am seting tag as 
AppRequest.settag(requesttag) 

但每次用戶按下後退按鈕時都會打電話取消嗎?我還沒有找到我可以檢查是否正在進行的請求,然後只取消。任何避免它的好辦法

+0

我不認爲你需要檢查。 Volley將自己處理它。如果有TAG請求,排除將取消它,否則什麼都不會發生。或者,您可以在發出請求時將布爾值設置爲true,並且如果按下返回按鈕,則只需檢查此布爾值的值。 –

回答

1

而不是使用標籤取消所有請求。你可以使用過濾器,

mRequestQueue.cancelAll(new RequestQueue.RequestFilter() { 
@Override 
    public boolean apply(Request<?> request) { 
     return true; 
    } 
}); 

希望這個幫助。

+0

這段代碼會做什麼? – bob

+0

您可以通過此代碼取消RequestQueue中的所有請求。 –

+0

什麼時候會執行? – bob

0

如果您使用AsynTask從服務器獲取數據,那麼您可以定義該Asynctask的一個實例。當用戶按下後退按鈕,你可以明確取消任務這樣

FetchDataListTask fetchDataListAsyncTask; 
fetchDataListAsyncTask = new FetchDataListTask(true); 
fetchDataListAsyncTask.execute(); 

,並把這個在您的Onbackpressed()方法

if (fetchLeadListAsyncTask != null) { 
       fetchLeadListAsyncTask.cancel(true); 
      } 
+2

使用排空不是異步 – bob

+0

您是否嘗試取消onPause()方法中的所有請求 – Awadesh