[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属性

 

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

posted @   唯一客服系统开发笔记  阅读(1121)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示
1
chat with us