您的位置:首页 > 移动开发 > Android开发

Android的一些开源框架的介绍

2017-02-27 17:19 260 查看
一、常用的一些网络框架

HttpUrlConnection

特点

它的API简单,体积较小,因而非常适用于Android项目。压缩和缓存机制可以有效地减少网络访问的流量,在提升速度和省电方面也起到了较大的作用。

01、比较轻便,灵活,易于扩展

02、在3.0后以及4.0中都进行了改善,如对HTTPS的支持

03、在4.0中,还增加了对缓存的支持

用法

1、首先我们需要获取到一个HttpURLConnection实例,一般需要new出一个URL对象,并传入目标网络地址,通过调用openConnection()方法获得HttpURLConnection实例。

2、得到该实例后。我们需要设置一下http请求的的方法,这里我们主要研究get和post,默认是使用get方法。get一般用于从服务器获取数据,post一般用于向服务器提交数据,设置请求方法使用函数setRequestMethod(“POST”)进行设置。

3、此外可以进行一些请求的限制,比如连接超时的时间等,可以通过setConnectTimeout设置超时时间。

4、获取服务器返回的输入流,使用getInputStream方法获取。

5、读取内容并处理

6、关闭连接,通过调用disconnect方法关闭当前的连接。

Asynchronous Http Client

特点

1、所以请求在子线程中完成,请求回调在调用该请求的线程中完成

使用线程池

2、使用RequestParams类封装请求参数

3、支持文件上传

4、持久化cookie到SharedPreferences,个人感觉这一点也是这个库的重要特点,可以很方便的完成一些模拟登录

5、支持json

6、支持HTTP Basic Auth

Volley

Volley可以说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可以像AsyncHttpClient一样非常简单地进行HTTP通信,也可以像Universal-Image-Loader一样轻松加载网络上的图片。除了简单易用之外,Volley在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕

特点

1、Volley的优势在于处理小文件的http请求;

2、在Volley中也是可以使用Okhttp作为传输层/

3、Volley在处理高分辨率的图像压缩上有很好的支持;

4、NetworkImageView在GC的使用模式上更加保守,在请求清理上也更加积极,networkimageview仅仅依赖于强大的内存引用,并当一个新请求是来自ImageView或ImageView离开屏幕时 会清理掉所有的请求数据。

okHttp

okhttp 是一个 Java 的 HTTP+SPDY 客户端开发包,同时也支持 Android。需要Android 2.3以上。

特点

1、OKHttp是Android版Http客户端。非常高效,支持SPDY、连接池、GZIP和 HTTP 缓存。

2、默认情况下,OKHttp会自动处理常见的网络问题,像二次连接、SSL的握手问题。

3、如果你的应用程序中集成了OKHttp,Retrofit默认会使用OKHttp处理其他网络层请求。

4、从Android4.4开始HttpURLConnection的底层实现采用的是okHttp.

Retrofit

特点

1、性能最好,处理最快

2、使用REST API时非常方便;

3、传输层默认就使用OkHttp;

4、支持NIO;

5、拥有出色的API文档和社区支持

6、速度上比volley更快;

7、如果你的应用程序中集成了OKHttp,Retrofit默认会使用OKHttp处理其他网络层请求。

8、默认使用Gson

xUtils

xUtils 包含了很多实用的android工具。

xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响

目前xUtils主要有四大模块:

(1) 数据库模块:android中的orm框架,一行代码就可以进行增删改查;

支持事务,默认关闭;

可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名);

支持绑定外键,保存实体时外键关联实体自动保存或更新;

自动加载外键关联实体,支持延时加载;

支持链式表达查询,更直观的查询语义,参考下面的介绍或sample中的例子。

(2) 注解模块:android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定;

新的事件绑定方式,使用混淆工具混淆后仍可正常工作;

目前支持常用的20种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。

(3) 网络模块:支持同步,异步方式的请求;

支持大文件上传,上传大文件不会oom;

支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT请求;

下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件;

返回文本内容的请求(默认只启用了GET请
4000
求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。

(4) 图片缓存模块:加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象;

支持加载网络图片和本地图片;

内存管理使用lru算法,更好的管理bitmap内存;

可配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等…

AFinal现在有四大模块

主要有四大模块:

(1) 数据库模块:android中的orm框架,使用了线程池对sqlite进行操作。

(2) 注解模块:android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定。无需findViewById和setClickListener等。

(3) 网络模块:通过httpclient进行封装http数据请求,支持ajax方式加载,支持下载、上传文件功能。

(4) 图片缓存模块:通过FinalBitmap,imageview加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。

二、常用的一些数据库框架

ormlite

基于注解和反射的的方式,导致ormlite性能有着一定的损失(注解其实也是利用了反射的原理)

优点:

文档较全面,社区活跃,有好的维护,使用简单,易上手。

缺点:

基于反射,效率较低

GreenDao

优点:

效率很高,插入和更新的速度是sqlite的2倍,加载实体的速度是ormlite的4.5倍。文件较小(<100K),占用更少的内存 ,但是需要create Dao,操作实体灵活:支持get,update,delete等操作

缺点:

学习成本较高。其中使用了一个java工程根据一些属性和规则去generate一些基础代码,类似于javaBean但会有一些规则,另外还有QueryBuilder、Dao等API,所以首先要明白整个过程,才能方便使用。没有ORMLite那样封装的完整,不过greenDao的官网上也提到了这一点,正是基于generator而不是反射,才使得其效率高的多。

另外GreenDao支持Protocol buffers协议数据的直接存储 ,如果通过protobuf协议和服务器交互,不需要任何的映射。

统计框架

Hellocharts和MPAndroidChart各有优劣,个人觉得,Hellocharts在效果展示及动态处理上更亲和用户,而MPAndroidChart则在图表处理能力上更胜一筹, 两者的代码调用极其相似
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: