[android] 异步http框架与实现原理

介绍github上的异步http框架android-async-http loopj开发

 

获取AsyncHttpClient对象,通过new

调用AsyncHttpClient对象的get(url,responseHandler)方法,发送get请求,参数:urlString类型的路径,responseHandlerAsyncHttpResponseHandler对象

想要获取返回的数据,需要重新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,定义两个回调方法onSuccessonFailure

重写handleMessage()方法,在这个方法里面对Message对象的what属性进行判断,如果成功调用onSuccess()方法,如果失败调用onFailure()方法

 

AsyncHttpClient类里发送成功的时候,调用MyHandler对象的sendMessage()方法,参数是Message对象,赋值Message对象的what属性和obj属性

 

然后在主线程里面进行调用,使用方法和前面一样,这就是模板方法的一种设计理念,成功执行一个方法,失败执行一个方法

相关文章

AdvserView.java package com.earen.viewflipper; import an...
ImageView的scaleType的属性有好几种,分别是matrix(默认)...
文章浏览阅读8.8k次,点赞9次,收藏20次。本文操作环境:win1...
文章浏览阅读1.2w次,点赞15次,收藏69次。实现目的:由main...
文章浏览阅读3.8w次。前言:最近在找Android上的全局代理软件...
文章浏览阅读2.5w次,点赞17次,收藏6次。创建项目后,运行项...