有一种很好使的网络框架封装:基于AsyncTask。不过这个框架有个巨大的缺陷:不能立刻马上取消task。
那么,在2g或者网络差的时候,进行页面切换后,就有可能造成线程池task拥堵,无法及时响应当前的task。
众观当前主流的框架:okhttp, retrofit,volley。都是轻量化设计。(三者差异就不讨论了,不是主题)
都有那么点ThreadPoolExecutor+Runnable+Handler的意思。
倘若再+Cookie+Cache+Mock+实体化,又或者再+Annotation就有这三个开源框架的形神了。
ThreadPoolExecutor+Runnable+Handler
先看一张图
1.列举所有后端API
2.RequestNode封装这些API
3.activity获取RemoteService的实例(Singleton),将RequestCallback,RequestParameter作为参数传递给RemoteService的invoke函数
4.invoke函数,以RequestCallback和RequestParameter作为参数传递给RequestManager创建HttpRequest
5.将HttpRequest传递给ThreadPoolExecutor处理
6.结果用ResponseType封装,通过Handler经ResquestCallback返回传输结果。
减少Request次数
基本上这图很清楚了。不说了。
还得说一下APINode
得包含4部分
Expires在CacheManager中使用。
通过CacheManager去获取缓存结果时,Expires>0下,对比timestamp,过期则重新获取,否则返回缓存结果。
当然,请求时将Expires设置为0就强制更新了。
MockService模拟后端结果
大数据量请求的情况
需要用gzip封装一下。没了。其他还好。。。