Android 通用流行框架梳理(转)

1. 缓存

DiskLruCacheJava实现基于LRU的磁盘缓存,

防止多图OOM的时候用得上。

2.图片加载

Android Universal Image Loader一个强大的加载,缓存,展示图片的库

Picasso一个强大的图片下载与缓存的库

Fresco一个用于管理图像和他们使用的内存的库

Glide一个图片加载和缓存的库

3. 图片处理

Picasso-transformations一个为Picasso提供多种图片变换的库

Glide-transformations一个为Glide提供多种图片变换的库

Android-gpuimage基于OpenGL的Android过滤器

4. 网络请求

Android Async HTTPAndroid异步HTTP库

AndroidAsync异步Socket,HTTP(客户端+服务器),WebSocket,和socket.io库。基于NIO而不是线程。

OkHttp一个Http与Http/2的客户端,比其他的强大,使用方式也稍显复杂

Retrofit类型安全的Http客户端

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

5. 网络解析

Gson一个Java序列化/反序列化库,可以将JSON和java对象互相转换。相对于较为传统的Json解析来说,google共享的开源Gson在解析速度和所使用的内存在有着明显的优势,虽然说阿里巴巴也提供了fastgson包,但是它跟Gson的处理速度大同小异,只是底层实现的原理不同。核心函数是:

[java]view plaincopy

publicstaticString createJsonString(Object value)

{

Gson gson =newGson();

String str = gson.toJson(value);

returnstr;

}

JacksonJackson可以轻松地将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。

Stream API方式是开销最低、效率最高,但编写代码复杂度也最高,在生成Json时,需要逐步编写符号和字段拼接json,在解析Json时,需要根据token指向也查找json值,生成和解析json都不是很方便,代码可读性也很低。

Databinding处理Json是最常用的json处理方式,生成json时,创建相关的java对象,并根据json内容结构把java对象组装起来,最后调用writeValue方法即可生成json,

解析时,就更简单了,直接把json映射到相关的java对象,然后就可以遍历java对象来获取值了。

FastjsonJava上一个快速的JSON解析器/生成器。阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:

速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson;

功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android;开源 (Apache 2.0)

[java]view plaincopy

t = JSON.parseObject(jsonString, cls);

list = JSON.parseArray(jsonString, cls);

HtmlPaser一种用来解析单个独立html或嵌套html的方式。对于树型结构进行遍历的函数,这些函数最容易理解:

NodegetParent():取得父节点

NodeListgetChildren():取得子节点的列表

NodegetFirstChild():取得第一个子节点

NodegetLastChild():取得最后一个子节点

NodegetPreviousSibling():取得前一个兄弟(不好意思,英文是兄弟姐妹,直译太麻烦而且不符合习惯,对不起女同胞了)

NodegetNextSibling():取得下一个兄弟节点

取得Node内容的函数:

StringgetText():取得文本

StringtoPlainTextString():取得纯文本信息。

StringtoHtml():取得HTML信息(原始HTML)

StringtoHtml(boolean verbatim):取得HTML信息(原始HTML)

StringtoString():取得字符串信息(原始HTML)

PagegetPage():取得这个Node对应的Page对象

intgetStartPosition():取得这个Node在HTML页面中的起始位置

intgetEndPosition():取得这个Node在HTML页面中的结束位置

用于Filter过滤的函数:

voidcollectInto(NodeList list, NodeFilter filter):基于filter的条件对于这个节点进行过滤,符合条件的节点放到list中。

用于Visitor遍历的函数:

voidaccept(NodeVisitor visitor):对这个Node应用visitor

Jsoup一个以最好的DOM,CSS和jQuery解析html的库。通过class="article_item"获取到所有的元素,也就是Element,然后遍历所有的元素,把每个元素我们需要的值取出来。我们可以定义一个实体类,

6. 数据库

对象-关系映射(OBJECT/RELATION MAPPING,简称ORM),是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。

OrmLiteJDBC和Android的轻量级ORM (对象关系映射)java包。提高我们的开发效率

Sugar用超级简单的方法处理Android数据库。SugarORM 是 Android 平台专用ORM,感觉还是这个好用

一个简单,简洁,干净的一体化进程以最小的配置。

通过反射自动命名表和列。

支持不同模式版本之间迁移。

GreenDAO一种轻快地将对象映射到SQLite数据库的ORM解决方案。当性能很重要时(数据访问频繁),GreenDao是一个很快的解决方案,它能够支持数千条记录的CRUD每秒,和OrmLite相比,GreenDAO要快几乎4.5倍。感觉平时没必要。

ActiveAndroid以活动记录方式为Android SQLite提供持久化

SQLBriteSQLiteOpenHelper 和ContentResolver的轻量级包装。感觉不太好用。

Realm移动数据库:一个SQLite和ORM的替换品。安卓开发的最新趋势,支持JSON,流式api,数据变更通知,以及加密支持,这些都为安卓开发者带来了方便。

7. 依赖注入

ButterKnife将Android视图和回调方法绑定到字段和方法上。也就是 findViewById(),一直以来的做法都是一个个定义,然后在 setContentView() 或 inflate() 之后一一来findViewById()进行实例化,而使用 ButterKnife,你只需要在代码中 使用注解方式进行对象申明,然后在 setContentView() 或 inflate() 之后调用一句话,那么申明的所有对象自动创建出来。OnClickListener监听什么的。

Dagger2一个Android和java快速依赖注射器。目前Dagger 2 确实是最容易使用和调试,同时还具有最佳性能的框架了。不太明白。

AndroidAnotations快速安卓开发。易于维护。使代码更加精简,使项目更加容易维护

RoboGuiceAndroid平台的Google Guice。Dependency Injection( 依赖注入)可以很好的帮助我们分离模块,降低耦合、提高可测试性。(PS:Roboguice 只是一个工具,依赖注入更多的是一种思想)

8. 图表

WilliamChart创建图表的Android库。WilliamChart是基于Views的Android图表类库,帮助开发者在Android应用中实现折线图、柱状图和堆叠柱状图。数值发生变化时图表也会以动画的效果发生变化。

HelloCharts兼容到API8的Android图表库

MPAndroidChart一个强大的Android图表视图/图形库。一个可以拖动缩放的图表库,包含曲线图、直方图、饼状图,其中直方图支持3d效果。

9. 后台处理

Tape一个轻快的,事务性的,基于文件的FIFO的库

Android Priority Job Queue一个专门为Android轻松调度任务的工作队列。执行定时任务什么的很方便。

10. 事件总线

EventBus安卓优化的事件总线,简化了活动、片段、线程、服务等的通信

Otto一个基于Guava的增强的事件总线,

Android程序开发的过程中想要不同的组件之间进行有效的通信可以使用这个库。通过otto库可以

降低程序之间的耦合性。这个以后一定要用一下。

11. 响应式编程(好像新的语言一样)

RxJavaJVM上的响应式扩展

RxJavaJoins为RxJava提供Joins操作

RxAndroidAndroid上的响应式扩展,在RxJava基础上添加了Android线程调度

RxBinding提供用RxJava绑定Android UI的API

AgeraAndroid上的响应式编程

12. Log框架

Logger简单,漂亮,强大的Android日志工具

Hugo在调试版本上注解的触发方法进行日志记录

Timber一个小的,可扩展的日志工具

13. 测试框架

MockitoJava编写的Mocking单元测试框架,通过它很容易地测试项目中很少出现的边缘情况(会话超时、服务器维护、特殊值),确保我们的应用正常运行。

RobotiumAndroid UI 测试

RobolectricAndroid单元测试框架

Android自带很多测试工具:JUnit,Monkeyrunner,UiAutomator,Espresso等

14. 调试框架

Stetho调试Android应用的桥梁,使得可以利用Chrome开发者工具进行调试,很高端 = =;感觉暂时用不上。

15. 性能优化

LeakCanary内存泄漏检测工具

ACRAAndroid应用程序崩溃报告

你可能感兴趣的:(Android 通用流行框架梳理(转))