[android] 异步http框架与实现原理
介绍github上的异步http框架android-async-http loopj开发
获取AsyncHttpClient对象,通过new
调用AsyncHttpClient对象的get(url,responseHandler)方法,发送get请求,参数:url是String类型的路径,responseHandler是AsyncHttpResponseHandler对象
想要获取返回的数据,需要重新AsyncHttpResponseHandler类的onSuccess()方法,直接使用匿名内部类的方式重写,方法是个回调函数,参数就是返回的内容String类型
重写onFailure()方法,请求失败的时候调用。
自己实现一个精简版的异步http框架
我们的http请求经历这样两个阶段:
1.开启子线程,在子线程执行一个http请求
2.子线程执行完毕之后,通知ui界面更新
创建一个类叫AsyncHttpClient,定义一个方法叫get(String path),
在这个方法里面开启子线程,直接new Thread重写run方法,
在run方法里面,获取HttpClient对象,获取HttpGet对象,调用HttpClient对象的execute()方法,这个时候需要使用Handler对象传递信息给主线程
在get()方法里面加个参数MyHandler对象,这个对象继承自Handler
创建一个类叫MyHandler继承Handler,定义两个回调方法onSuccess和onFailure
重写handleMessage()方法,在这个方法里面对Message对象的what属性进行判断,如果成功调用onSuccess()方法,如果失败调用onFailure()方法
在AsyncHttpClient类里发送成功的时候,调用MyHandler对象的sendMessage()方法,参数是Message对象,赋值Message对象的what属性和obj属性
然后在主线程里面进行调用,使用方法和前面一样,这就是模板方法的一种设计理念,成功执行一个方法,失败执行一个方法
[android] 异步http框架与实现原理的更多相关文章
- Android 异步查询框架AsyncQueryHandler的使用
AsyncQueryHandler简介: 异步的查询操作帮助类,可以处理增删改(ContentProvider提供的数据) 使用场景: 在一般的应用中可以使用ContentProvider去操作数据库 ...
- Android异步任务处理框架AsyncTask源代码分析
[转载请注明出处:http://blog.csdn.net/feiduclear_up CSDN 废墟的树] 引言 在平时项目开发中难免会遇到异步耗时的任务(比方最常见的网络请求).遇到这样的问题.我 ...
- android异步Http框架
首先在GitHub上下载异步Http框架代码以及相关文档: 将jar包放入lib包中即可: 接下来分别实现get.post.文件上传功能实现: 代码实现如下: AsyncHttpClient clie ...
- Android 异步Http框架简介和实现原理
在前几篇文章中<Android 采用get方式提交数据到服务器><Android 采用post方式提交数据到服务器><Android 采用HttpClient提交数据到服 ...
- 异步http框架简介&实现原理
1 )说明: Android开源代码:www.github.com 模拟一个异步http请求说明
- Android异步消息处理机制(多线程)
当我们需要执行一些耗时操作,比如说发起一条网络请求时,考虑到网速等其他原因,服务器未必会立刻响应我们的请求,如果不将这类操作放在子线程里去执行,就会导致主线程被阻塞住,从而影响用户对软件的正常使用. ...
- (转)android平台phonegap框架实现原理
(原文)http://blog.csdn.net/wuruixn/article/details/7405175 android平台phonegap框架实现原理 分类: Android2012-03- ...
- Android 从零开始打造异步处理框架
转载请标明出处:http://www.cnblogs.com/zhaoyanjun/p/5995752.html 本文出自[赵彦军的博客] 概述 在Android中会使用异步任务来处理耗时操作,避免出 ...
- android 学习随笔十二(网络:使用异步HttpClient框架)
使用异步HttpClient框架发送get.post请求 在https://github.com/ 搜索 asyn-http https://github.com/search?utf8=✓& ...
随机推荐
- 一篇入门 — Scala 宏
前情回顾 上一节, 我简单的说了一下反射的基本概念以及运行时反射的用法, 同时简单的介绍了一下编译原理知识, 其中我感觉最为绕的地方, 就属泛型的几种使用方式了. 而最抽象的概念, 就是对于符号和抽象 ...
- python模块的导入的两种方式区别详解
Python 有两种导入模块的方法.两种都有用,你应该知道什么时候使用哪一种方法.一种方法,import module,另一种是from module import,下面是 from module i ...
- JavaScript 基础排序的实现(二)
继上一篇O(n^2)的排序算法后,这一篇主要记录O(n*logn)的排序算法 1.快排(快速排序) 这一算法的核心思想为,先随机选一个数作为标兵或者说是标记(这个数一般来说选择该无序数组的中间那个元素 ...
- Ubuntu18.04 VMwareTools安装方法
sudo apt-get upgradesudo apt-get install open-vm-tools-desktop -y sudo reboot 一.VMwareTools的一些实用性 ...
- 吴恩达机器学习笔记2-代价函数I(cost function)
我们选择的参数决定了我们得到的直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距(下图中蓝线所指)就是建模误差(modeling error). 我们的目标便是选择出可以使得建 ...
- HTML5之日历控件
HTML5定义了几个与日期有关的新控件.支持日期控件的浏览器会提供一个方便的下拉式日历,供用户选择. 以下测试和截图都是在谷歌浏览器完成的,其他浏览器可能略有差异. 1.日期时间控件 HTML代码: ...
- 生产apollo搭建记录(五)
1. 生产apollo搭建记录(五) 1.1. 目标 搭建两个环境配置,dev和pro,但目前可用服务器限制,打算mysql用同一个,服务器分生产和测试 1.2. 数据库 建三个库 注意注意:在启 ...
- PowerShell 实现批量下载文件
简介 批量文件下载器 PowerShell 版,类似于迅雷批量下载功能,且可以破解 Referer 防盗链 源代码 [int]$script:completed = 0 # 下载完成数量 [int]$ ...
- Python super() 函数的概念和例子
概念: super() 函数是用于调用父类(超类)的一个方法. super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO).重 ...
- Python图像处理库PIL中图像格式转换
o 在数字图像处理中,针对不同的图像格式有其特定的处理算法.所以,在做图像处理之前,我们需要考虑清楚自己要基于哪种格式的图像进行算法设计及其实现.本文基于这个需求,使用python中的图像处理库PIL ...