网络请求的取消
-
httpclient:
DefaultHttpClient httpClient = new DefaultHttpClient(); ClientConnectionManager connectionManager = httpClient.getConnectionManager();// 拿到连接管理器 connectionManager.shutdown();
- httpurlconnection: HttpURLConnection.disconnect();
-
volley:多级别取消
-
- 取消某一个请求:
-
取消请求的队列:
//2. 创建RequestQueue RequestQueue queue = Volley.newRequestQueue(MainActivity.this); //3. 发起请求 queue.add(stringRequest); //取消单个请求 stringRequest.cancel();//取消一个请求 //取消所有请求 queue.cancelAll(null);//取消请求队列里面所有的方法 //取消置顶tag的请求 queue.cancelAll("tag1");//取消tag为tag1的一个请求 //请求添加tag-->tag的目的就是为了反查 stringRequest.setTag("tag1"); //两个不同的请求可以设置同一个tag stringRequest.setTag("tag1"); // stringRequest1.setTag("tag1");
- xutils:xutils其实也是封装的httpclient,所以网络请求取消的方式和httpClient一样
-
生命周期的联动 通过一个 activity就设置同一个tag
StringRequest req1 = null; StringRequest req2 = null; StringRequest req3 = null; StringRequest req4 = null; StringRequest req5 = null; req1.setTag(this.getClass().getSimpleName()); req2.setTag(this.getClass().getSimpleName()); req3.setTag(this.getClass().getSimpleName()); req4.setTag(this.getClass().getSimpleName()); req5.setTag(this.getClass().getSimpleName()); // 取消对应activity里面所有的请求 RequestQueue queue = VolleyTools.getInstance(MainActivity.this).getQueue(); queue.cancelAll(this.getClass().getSimpleName());// MainActivity