2019独角兽企业重金招聘Python工程师标准>>>

  1. 前言

    关于android-async-http诸多,相信大家都有一定的了解。我在这里只简单的说一下它的取消请求这一块。所有结论都是在同一个Context情况下。

  2. 能被取消请求的请求

    android-async-http能被取消请求的请求必须传入一个Context,否则则没有任何效果。以简单的get请求为例。

get(context, url, params, responseHandler);

下面是一个网络请求类:

/*** 网络请求* @author Yang* @date 2015年3月16日 下午2:58:13*/
public class FMHttpClient {private AsyncHttpClient client;public FMHttpClient() {client = new AsyncHttpClient();}/*** 获取AsyncHttpClient对象。* @return*/public AsyncHttpClient getAsyncHttpClient(){return client;}/*** Get请求。* @param context* @param url* @param params* @param responseHandler* @return RequestHandle*/public RequestHandle get(Context context,String url, RequestParamparams,ResponseHandlerInterface   responseHandler){return client.get(context, url, params, responseHandler);} /*** 取消同一个Context下所有待执行的网络请求。* @param context* @param mayInterruptIfRunning 是否同时取消正在进行的网络请求*/public void cancelRequests(Context context,boolean mayInterruptIfRunning){client.cancelRequests(context, mayInterruptIfRunning);}/*** 取消所有待执行的网络请求。* @param mayInterruptIfRunning 是否同时取消正在进行的网络请求*/public void cancelAllRequests(boolean mayInterruptIfRunning){client.cancelAllRequests(mayInterruptIfRunning);}}

  3.    取消请求的三种方式

(1) 第一种取消请求

cancelRequests(Context context, boolean mayInterruptIfRunning);//在AsyncHttpClient中

(2) 第二种取消请求

cancelAllRequests(boolean mayInterruptIfRunning);//在AsyncHttpClient中

(3) 第三种取消请求

cancel(boolean mayInterruptIfRunning) //在RequestHandle中

下面请看主程序实现类:

public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);String url1 = "https://www.baidu.com/";FMHttpClient client = new FMHttpClient();RequestHandle rd1 = client.get(this, url1, null, new AsyncHttpResponseHandler(){@Overridepublic void onSuccess(int arg0, Header[] arg1, byte[] arg2) {System.out.println("content1 size: "+arg2.length);}@Overridepublic void onFailure(int arg0, Header[] arg1, byte[] arg2,Throwable arg3) {System.out.println("onFailure1");}@Overridepublic void onFinish() {System.out.println("onFinish1");}});String url2 = "http://www.hao123.com/";RequestHandle rd2 = client.get(this, url2, null, new AsyncHttpResponseHandler(){@Overridepublic void onSuccess(int arg0, Header[] arg1, byte[] arg2) {System.out.println("content2 size: "+arg2.length);}@Overridepublic void onFailure(int arg0, Header[] arg1, byte[] arg2,Throwable arg3) {System.out.println("onFailure2");}@Overridepublic void onFinish() {System.out.println("onFinish2");}});//rd1.cancel(true);//client.cancelRequests(this, true);//client.cancelAllRequests(true);System.out.println("result1-->"+rd1.isCancelled());System.out.println("result2-->"+rd2.isCancelled());}
}

两个或者两个以上的请求:

使用第一种和第二中一样,则打印结果都为true,两个请求都被取消。假设需求要求各个取消请求互不影响的话,那这两钟方法都不可取,而需求是要求所有请求都被取消,那么这两种都可以使用,不过优先选择第二种。

使用第三种取消请求,对应其中某一个请求,则此请求将会被取消,而其他请求不被影响。

一个请求:

三种方式随便用。

转载于:https://my.oschina.net/u/1257439/blog/387673

android-async-http取消请求相关推荐

  1. android网络请求撤销,Android OkHttp + Retrofit 取消请求的方法

    前言 在某一个界面,用户发起了一个网络请求,因为某种原因用户在网络请求完成前离开了当前界面,比较好的做法是取消这个网络请求.对于OkHttp来说,具体是调用Call的cancel方法. 如何找到这一个 ...

  2. android 设置允许http请求_网络请求框架----OkHttp原理

    一.前言 在 Android 中,网络请求是一个必不可少的功能,因此就有许多代表网络请求客户端的组件库,具有代表性的有下面三种: Apache 的 HTTP 客户端组件 HttpClient. Jav ...

  3. Android之解剖网络请求框架Volley

    转载请标明出处:[顾林海的博客] 个人开发的微信小程序,目前功能是书籍推荐,后续会完善一些新功能,希望大家多多支持! Volley介绍 Volley是Google推出的网络请求库,包含的特性有JSON ...

  4. Android中Http网络请求库框架Volley和Asnyc-http的使用---第三方库学习笔记(一)

    Volley框架: 特点: 通信更快,更简单 Get,Post网络请求及网络图像的高效率异步处理请求. 当多个请求时,对网络请求进行排序,按优先级处理 当网络状况不好时,Volley可以自动对上次请求 ...

  5. antdpro使用AbortController取消请求

    官方api地址:https://developer.mozilla.org/zh-CN/docs/Web/API/AbortController umi-request案例:https://githu ...

  6. axios 取消请求:CancelToken

    目录 示例代码: 步骤操作: 优化取消请求(细化错误问题): 示例代码: axios 请求拦截器中使用取消请求: 示例代码: axios 批量发送请求: 注意:此方法(CancelToken),官方已 ...

  7. 一个整合OkHttp 、Retrofit 、Volley 、RxJava、Novate多种开源网络框架的项目,高度的封装和集成,Android中Web网络请求一行代码解决

    一个整合OkHttp .Retrofit .Volley .RxJava.Novate多种开源网络框架的项目,高度的封装和集成,Android中Web网络请求一行代码解决 AndroidHttp 一个 ...

  8. Android - RxEasyHttp网络库请求数据

    github源码地址:https://github.com/zhou-you/RxEasyHttp 请求数据 网络请求,采用链式调用,支持一点到底. 入口方法   /**      * get请求   ...

  9. android危险权限分组,Android 6.0权限请求相关及权限分组方法

    Android M(6.0)API 23后加入了权限请求设置,APP需要使用某些权限需要主动申请. 权限分为3类,一组是Normal权限,无需申请,另一组是Dangerous,需申请,然后是特殊权限, ...

  10. Android中的HTTP请求

    在Android 中发送HTTP请求的方式一般有两种,HttpURLConnection和HttpClient,下面介绍的是HttpURLConnection的使用方法. 1.定义xml文件 < ...

最新文章

  1. UVa 12012 - Detection of Extraterrestrial(hash)
  2. 为什么vs会输出一个框作为结果_检测与分类专辑 | 对精准目标检测的含不确定性的边界框回归...
  3. 【1】淘宝sdk装修入门引言
  4. LeetCode 1360. 日期之间隔几天(闰年判断)
  5. ghost后自动修改IP和计算机名的VBS脚本
  6. 合并table中某一列相邻的相同的行
  7. 基于matlab和lingo的数学实验,MATLAB和LINGO软件在数学建模竞赛中的应用-精选教育文档...
  8. 对“西刺免费代理IP“爬取、测试并存入MySQL
  9. 各种风格的Android面试题进来了解一下,面试必问
  10. 用户用户组,与密码管理,su,sudo命令,限制root远程登陆
  11. CSD-1371电力监控系统网络安全监测装置(Ⅱ 型)介绍
  12. 数据爬取-奇技淫巧系列1——抓取隐藏在CDN,防爬代理等服务后面的数据
  13. 【免杀前置课——Windows编程】五、窗口控件——什么是控件、Windolws 窗口两大类、Windows标准控件/通用控件、控件响应的接收、创建窗口制作不同控件
  14. 科研必备的12个网站
  15. 腾讯内部转岗_如何一句话证明你在腾讯工作过
  16. 电话号码正则表达式!
  17. Antlr4在win10下的环境配置
  18. yb3防爆电机型号含义_YBK3/YB3/YBX3-160M2-2-15KW防爆电机参数详解
  19. QGIS 3D:三维DEM数据加载渲染漫游
  20. bash-sed命令

热门文章

  1. 计算机控制实验2,计算机控制系统实验报告 (2)
  2. mfc怎么获取进程的线程数_2020年大厂喜欢这样问线程安全,这些知识点我整理好了
  3. python 队列实现_Python Queue队列实现线程通信
  4. Web Components 入门
  5. android旋转缩放布局,Android学习笔记(一):双指缩放及旋转计算
  6. camunda流程定义表无数据_【经验】数据可视化分析操作指南
  7. python建模 决策_决策树python建模中的坑 :ValueError: Expected 2D array, got 1D array instead:...
  8. python获取日期_python 获取日期
  9. 微型计算机接口与技术答案,微型计算机接口技术与应用习题答案(刘乐善).doc
  10. 卷积滤波 英文_图像处理必备英文词汇