NoHttp提供了以下几种方法来取消请求: [TOC] ## 取消单个请求 直接调用`Request`的`cancel()`方法即可: ```java /** * 请求对象。 */ private Request<String> mRequest; @Override protected void onActivityCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_cacel_demo); // 发起请求。 mRequest = NoHttp.createStringRequest(Constants.URL_NOHTTP_TEST, RequestMethod.GET); ... } @Override protected void onDestroy() { super.onDestroy(); // 退出时取消请求。 if (mRequest != null) mRequest.cancel(); } ``` ## 取消队列中的指定请求 一般用于一个页面有多个请求,在退出之前如果请求还没执行完时取消时。需要给这个`Request`设置一个`sign`,在取消的时候调用队列的`queue.cancenBySign(Object)`即可。 ```java private RequestQueue queue; private Object cancelSign = new Object(); @Override protected void onActivityCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_cacel_demo); // 初始化队列等。 ... // 请求1。 Request<String> request1 = NoHttp.createStringRequest(Constants.URL_NOHTTP_TEST, RequestMethod.GET); request1.setCancelSign(cancelSign); // 请求2。 Request<String> request2 = NoHttp.createStringRequest(Constants.URL_NOHTTP_TEST, RequestMethod.GET); request2.setCancelSign(cancelSign); // 把请求加入队列 queue.add(1, request1, listener); queue.add(2, request2, listener); } private OnResponseListener listener = new OnResponseListener() { ... } @Override protected void onDestroy() { super.onDestroy(); queue.cancelBySign(cancelSign); } ``` ## 取消队列中的所有请求 一般用于APP退出时取消未完成的所有请求,或者某个页面退出时取消所有请求。 ```java @Override protected void onDestroy() { super.onDestroy(); queue.cancelAll(); } ``` **推荐阅读** [1. NoHttp队列特性详解](http://doc.nohttp.net/222881) [1. 请求的优先级](http://doc.nohttp.net/222885)