首页 > 系统 > Android > 正文

Android的一些框架的特点

2019-11-06 09:51:19
字体:
来源:转载
供稿:网友

OkHttp的特点:

   1.使用GZip压缩下载内容,且压缩操作对用户是透明的。 

2、利用响应缓存来避免重复的网络请求。 

3、如果你的服务端有多个IP地址,当第一个地址连接失败时,OKHttp会尝试连接其他的地址,这对IPV4和IPV6以及寄宿在多个数据中心的服务而言,是非常有必要的

Retrofit的特点:

1.Retrofit使用注解方式,大大简化了我们的URL拼写形式,而且注解含义一目了然,简单易懂;

  2.Retrofit使用简单,结构层次分明,每一步都能清晰的表达出之所以要使用的寓意;

  3.Retrofit支持同步和异步执行,使得请求变得异常简单,只要调用enqueue/execute即可完成;

4. Retrofit更大自由度的支持我们自定义的业务逻辑,如自定义Converters。

Volley :

首先从与框架同名的Volley.java开始分析,文件位于toolbox。该类主要用于建立一个新的请求队列RequestQueue,方法有两个分别是:

newRequestQueue(Context context, HttpStack stack)newRequestQueue(Context context)

1.传入Context时,调用newRequestQueue(context, null),然后根据DEFAULT_CACHE_DIR定义缓存文件名。

2.然后根据系统版本号,sdk大于9时使用HurlStack( HttpUrlConnection ),否则使用HttpClientStack( HttpClient ),然后将Stack传入Network,Network可以调用Stack处理请求,然后将结果转换成NetworkResponse

3.然后将定义的Network和缓存目录传入RequestQueue(Cache cache, Network network),根据默认的DEFAULT_NETWORK_THREAD_POOL_SIZE线程池大小常量去新建请求队列。

4.最后开启请求队列,执行start()方法,该方法会产生根据线程池大小产生对应数量的网络队列及缓存队列

5.创建完成一个请求队列后,每次调用只需要将自定义的Request通过add()方法传入,请求将会被添加到mCurrentRequests,该Set用于存储当前正在处理的请求,接着根据请求的shouldCache()方法判断是否需要进行缓存,如果不需要则直接放入网络队列,否则根据Url将请求放入缓存队列。

6.缓存调度器CacheDispatcher会从缓存队列中取出请求,然后根据CacheKey获取缓存,如果获取失败则放入网络队列中去处理,否则进行验证有效期等,最后将处理结果交由ResponseDelivery,他是返回结果分发接口,用于分发返回的结果

7.网络调度器NetworkDispatcher会从网络队列中取出请求,然后处理完成交由ResponseDelivery分发处理结果。

Volley提供的功能 :  1.JSON,图像等的异步下载; 2.网络请求的排序(scheduling) 3.网络请求的优先级处理  4.缓存  5.多级别取消请求

6.和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)

 Afinal的优点:

1.自动异步请求,不会造成主线程阻塞

2.内部提供文件下载功能

 Afinal的缺点:

1.对HTTP请求没有任何缓存策略,不符合HTTP缓存协议

2.不提供请求取消功能

3.请求无优先级概念

4.未修复HttpUrlConnection的BUG

Android Universal Image Loader:

1、多线程异步加载和显示图片(图片来源于网络、sd卡、assets文件夹,drawable文件夹(不能加载9patch),新增加载视频缩略图)

2、支持通过“listener”监视加载的过程,可以暂停加载图片,在经常使用的ListView、GridView中,可以设置滑动时暂停加载,停止滑动时加载图片(便于节约流量,在一些优化中可以使用)3、缓存图片至内存时,可以更加高效的工作4、高度可定制化(可以根据自己的需求进行各种配置,如:线程池,图片下载器,内存缓存策略等)5、支持图片的内存缓存,SD卡(文件)缓存6、在网络速度较慢时,还可以对图片进行加载并设置下载监听

Picasso:

优点:

自动管理一二级缓存自动取消ImageView的回收和请求取消可以对图片加载过程进行拦截缺点:

二级缓存速度略慢

OrmLite:

英文全称是Object Relational Mapping,

优点:

1. 轻量级 2. 使用简单,易上手 3. 封装完善 4. 文档全面

缺点 1. 基于反射,效率较低 2. 缺少中文翻译文档

GreenDao:

效率很高,插入和更新的速度是sqlite的2倍,加载实体的速度是ormlite的4.5倍

文件较小(<100K),占用更少的内存 ,但是需要create Dao,操作实体灵活:支持get,update,delete等操作

MPAndroidChart:

核心功能:

支持x,y轴缩放支持拖拽支持手指滑动支持高亮显示支持保存图表到文件中支持从文件(txt)中读取数据预先定义颜色模板自动生成标注支持自定义x,y轴的显示标签支持x,y轴动画支持x,y轴设置最大值和附加信息支持自定义字体,颜色,背景,手势,虚线等

HelloCharts:HelloCharts和MPAndroidChart差不多

如果你需要很多的功能,各种组合,或者显示,对界面没有太大的要求的话就选择MPchart。 如果你需要的是能满足基本的图表功能同时,还要兼顾美观性,流畅性,强烈建议hellochart。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表