安卓Android开发Android技术知识

Androidg各种开源框架的使用

2017-01-19  本文已影响340人  流水潺湲

Android开源框架

预览图 详细图

聚合型框架


Xuitls

DbUtils模块

Android 中的 orm 框架,一行代码就可以进行增删改查;

支持事务,默认关闭;

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

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

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

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


ViewUtils模块

Android中的 ioc 框架,完全注解方式就可以进行 UI,资源和事件绑定;

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

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


HttpUtils模块

支持同步,异步方式的请求;

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

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

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

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


BitmapUtils模块

加载bitmap的时候无需考虑bitmap加载过程中出现的oom和Android容器快速滑动时候出现的图片错位等现象;

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

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

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


Afinal

FinalDB模块

android中的orm框架,一行代码就可以进行增删改查。支持一对多,多对一等查询。

FinalActivity模块

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

FinalHttp模块

通过httpclient进行封装http数据请求,支持ajax方式加载。

FinalBitmap模块

通过FinalBitmap,imageview加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。FinalBitmap可以配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等。

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

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

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

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


ThinkAndroid

MVC模块:实现视图与模型的分离。

ioc模块:Android中的ioc模块,完全注解方式就可以进行UI绑定、res中的资源的读取、以及对象的初始化。

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

http模块:通过httpclient进行封装http数据请求,支持异步及同步方式加载。

缓存模块:通过简单的配置及设计可以很好的实现缓存,对缓存可以随意的配置

图片缓存模块:imageview加载图片的时候无需考虑图片加载过程中出现的oom和Android容器快速滑动时候出现的图片错位等现象。

配置器模块:可以对简易的实现配对配置的操作,目前配置文件可以支持Preference、Properties对配置进行存取。

日志打印模块:可以较快的轻易的是实现日志打印,支持日志打印的扩展,目前支持对sdcard写入本地打印、以及控制台打印

下载器模块:可以简单的实现多线程下载、后台下载、断点续传、对下载进行控制、如开始、暂停、删除等等。

网络状态检测模块:当网络状态改变时,对其进行检。


LoonAndroid

自动注入框架(只需要继承框架内的APP既可)

图片加载框架(多重缓存,自动回收,最大限度保证内存的安全性)

网络请求模块(继承了基本上现在所有的http请求)


eventbus(集成一个开源的框架)

验证框架(集成开源框架)


Json解析(支持解析成集合或者对象)

数据库(不知道是哪位写的 忘记了)

多线程断点下载(自动判断是否支持多线程,判断是否是重定向)

自动更新模块

一系列工具类

可读性差,耦合高,难扩展

网络请求


Asynchttp

比较老

在匿名回调中处理请求结果

在UI线程外进行http请求

文件断点上传

智能重试

默认gzip压缩

支持解析成Json格式

可将Cookies持久化到SharedPreferences


OKHttp

同步、异步

基于 NIO 和 Okio

HttpClient、HttpUrlConnection 进行操作


Volley

JSON,图像等的异步下载;

网络请求的排序(scheduling)

网络请求的优先级处理

缓存

多级别取消请求

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

Volley 的优势在于封装的更好


Rxjava(异步请求库)

rxjava与retrofit结合(eclipse中)

as

compile 'com.squareup.retrofit2:retrofit:2.1.0'//Retrofit2所需要的包

compile 'com.squareup.retrofit2:converter-gson:2.1.0'//ConverterFactory的Gson依赖包

compile 'com.squareup.retrofit2:converter-scalars:2.0.0-beta4'//ConverterFactory的String依赖包

//rxJava结合

compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'

compile 'io.reactivex:rxjava:1.2.3'

compile 'io.reactivex:rxandroid:1.2.1'


步骤

写一个新的网络请求,步骤是这样的:

1. 在Service中定义一个新的方法。

2. 在HttpMethods封装对应的请求(代码基本可以copy)

3. 创建一个SubscriberOnNextListener处理请求数据并刷新UI。


Retrofit

eclipse

eclipse中使用retrofit

android studio

compile 'com.squareup.retrofit2:retrofit:2.1.0'//Retrofit2所需要的包

compile 'com.squareup.retrofit2:converter-gson:2.1.0'//ConverterFactory的Gson依赖包

compile 'com.squareup.retrofit2:converter-scalars:2.0.0-beta4'//ConverterFactory的String依赖包

使用步骤:

1、创建解析对象JsonBean

2、创建对应接口API

3、初始化Retrofit、调用API、发送请求、更新UI

基于okhttp

后期不在维护

RESTful 网络请求框架、Retrofit 解耦的更彻底

频繁的、数据量小的网络请求

数据库

依赖注入


Butterknife


图片加载库

ImageLoader

已经停止了对该项目的维护

Fresco

Facebook 出品

Fresco 将图片放到一个特别的内存区域叫 Ashmem 区

大量使用图片,推荐使用 Fresco

Picasso

Square 公司

Glide

基于 Picasso

在磁盘缓存方面,Picasso 只会缓存原始尺寸的图片,而 Glide 缓存的是多种规格,也就意味着 Glide 会根据你 ImageView 的大小来缓存相应大小的图片尺寸,比如你 ImageView 大小是200*200,原图是 400*400 ,而使用 Glide 就会缓存 200*200 规格的图,而 Picasso 只会缓存 400*400 规格的。这个改进就会导致 Glide 比 Picasso 加载的速度要快,毕竟少了每次裁剪重新渲染的过程。

最重要的一个特性是 Glide 支持加载 Gif 动态图,而 Picasso 不支持该特性。

除此之外,还有很多其他配置选项的增加。

Google 公司

网络解析


Json 解析

Gson

FastJson

Jackson

HTML解析

Jsoup

事件总线


Eventbus


目前框架使用的主要都是开源框架,都可以在github上找到:

1、volley,项目地址 https://github.com/smanikandan14/Volley-demo

2、android-async-http  项目地址:https://github.com/loopj/android-async-http

3、Afinal框架 项目地址:https://github.com/yangfuhai/afinal

4、xUtils框架 项目地址:https://github.com/wyouflf/xUtils

5、ThinkAndroid 项目地址:https://github.com/white-cat/ThinkAndroid

6、LoonAndroid 项目地址:https://github.com/gdpancheng/LoonAndroid

AndroidStudio库文件下载地址:

http://jcenter.bintray.com/

http://jcenter.bintray.com/com/squareup/

概要

Glide 与 Picasso 之间优先推荐选择 Glide,尤其是如果你的项目想要支持 Gif 动态图,那更该选择 Glide 。

但是如果你的项目使用了 Square 公司的全家桶,如 Retrofit 或者 OkHttp ,那么搭配 Picasso 一起使用也不是不可,兼容性可能会更好些,占用体积也会少些。

对于一般的 App 使用 Fresco 未免有些大材小用了,大部分情况 Glide 都能满足你的需求了,但是如果你的 App 中大量使用图片,比如是类似 Instagram 一类的图片社交 App ,那么推荐使用 Fresco ,虽然稍复杂,但是还是推荐使用 Fresco ,对提升你 App 的性能与体验有不少帮助,值得花时间去研究并应用到自己的 App 上来

上一篇下一篇

猜你喜欢

热点阅读