[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=✓& ...
随机推荐
- Java编程题(1):n个数里出现次数大于等于n/2的数
题目描述:输入n个整数,输出出现次数大于等于数组长度一半的数. 输入描述:每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2. 输出描述:输出出现次数大于等 ...
- day_11函数的形参与实参
昨天讲了函数的定义和简单分类 1:什么是函数:具体特定功能的代码快 --特定功能代码作为一个整体,并给该整体命名,就是函数. 函数的优点: 1:减少代码的冗余 2:结构清晰,可读性强 3:具有复用性, ...
- Senparc.Weixin SDK 微信公众号 .NET 开发教程 索引
Senparc.WeixinSDK从一开始就坚持开源的状态,这个过程中得到了许多朋友的认可和支持. 目前SDK已经达到比较稳定的版本,这个过程中我觉得有必要整理一些思路和经验,和大家一起分享.也欢迎大 ...
- 前端“黑话”polyfill
前言 在Web前端开发这个日新月异的时代,总是需要阅读一些最新的英文技术博客来跟上技术的发展的潮流.而有时候会遇到一些比较高频的“黑话”,在社区里面可能已经是人人皆知的“共同语言”,而你接触的少就偏偏 ...
- Java面试题总结(附答案)
1.什么是B/S架构?C/S架构? B/S(Browser/Server),浏览器/服务器程序: C/S(Client/Server),客户端/服务端,桌面应用程序. 2.网络协议有哪些? HTTP: ...
- IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列
1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...
- centos安装discuz论坛
wget http://download.comsenz.com/DiscuzX/3.3/Discuz_X3.3_SC_UTF8.zip #下载最新版Discuzunzip Dis......zip ...
- Ubuntu18.04搭建nodejs环境
首先安装sudo apt install curl 然后安装命令(当前最新版本是0.33.2,最新版本可以在https://github.com/creationix/nvm查看): curl -o- ...
- 虚拟机安装ssh,关闭防火墙
输入命令:sudo apt-get install openssh-server 安装ssh 安装完成后,开启服务 sudo /etc/init.d/ssh start 之后使用如下命令 ...
- canvas转图片中的文字自动换行
概述 最近项目用到了canvas转图片,但是由于canvas对文字排版的支持非常弱,一般我们在canvas上画不同排版的文字(比如竖排文字)都是利用js计算横纵坐标,然后一个字一个字地画出来,今天无意 ...