2016-03-05 87 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