作为一名程序猿,好的工具会让你在搬运工的道路上越走越远。以下框架是在开发过程中经常会使用到的一些好的框架。列在这里做一个小小的总结,包含但不限于此。
1.缓存
- RxCache 使用注解来为
Retrofit
配置缓存信息,内部使用动态代理和Dagger
来实现。 - ACache ASimpleCache 是一个为android制定的 轻量级的 开源缓存框架。轻量到只有一个java文件(由十几个类精简而来)。
- DiskLruCache DiskLruCache是外部缓存,例如可以将网络下载的图片永久的缓存到手机外部存储中去,并可以将缓存数据取出来使用,DiskLruCache不是google官方所写,但是得到了官方推荐,DiskLruCache没有编写到SDK中去,如需使用可直接copy这个类到项目中去。
2.网络请求
- OkHttp 支持同步、异步请求的网络框架。
- Retrofit 我们可以理解为OkHttp的加强版,它也是一个网络加载框架。底层是使用OKHttp封装的。
- Volley Google推出的Android异步网络请求框架和图片加载框架。
- android-async-http Android异步HTTP库,已停止维护,不建议使用。
3.数据解析
- Jackson Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。Jackson所依赖的jar包较少,简单易用并且性能也要相对高些,并且Jackson社区相对比较活跃,更新速度也比较快。
- Fastjson Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。
- Gson 一个Java序列化/反序列化库,可以将JSON和java对象互相转换。谷歌官方推荐。
- htmlparser 一种用来解析单个独立html或嵌套html的方式,已停止维护,推荐使用Jsoup替代。
- Jsoup jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
4.图片加载
- Universal ImageLoader 一个强大的加载,缓存,展示图片的库,已经停止维护,不建议再使用。
- Picasso 是
Square
公司开源的一个Android
图形缓存库,可以实现图片下载和缓存功能。Square这个公司又很多的开源框架像
okhttp、retrofit都是他们家开源的…… - Glide 一个被google所推荐的图片加载库,作者是bumptech。这个库被广泛运用在google的开源项目中,包括2014年的google I/O大会上发布的官方app。
- Fresco Fresco是一个出自Facebook的功能强大的图片加载库。
5.数据库
- OrmLite 简述: 优点: 1.轻量级;2.使用简单,易上手;3.封装完善;4.文档全面。缺点:1.基于反射,效率较低(本人还没有觉得效率低);2.缺少中文翻译文档。
- SugarORM 是专门针对android orm 的一套框架。
- ActiveAndroid 以活动记录方式为Android SQLite提供持久化。
- Realm 是一个手机数据库,是用来替代 SQlite 的解决方案,比 SQlite 更轻量级,速度更快,因为它有一套自己的数据库搜索引擎,并且还具有很多现代数据库的优点,支持 JSON,流式 API 调用,数据变更通知,自动数据同步,简单身份验证,访问控制,事件处理,最重要的是跨平台,目前已经支持 Java、Swift、Object - C、React - Native 等多种实现。
- LitePal 它采用了对象关系映射(ORM)的模式,并将我们平时开发时最常用到的一些数据库功能进行了封装,使得不用编写一行SQL语句就可以完成各种建表、増删改查的操作。并且LitePal很“轻”,jar包只有100k不到,而且近乎零配置,这一点和hibernate这类的框架有很大区别。
- GreenDao Greendao是一款用于数据库创建与管理的框架,由于原生SQLite语言比较复杂繁琐,使得不少程序员不得不去学习SQLite原生语言,但是学习成本高,效率低下,所以不少公司致力于开发一款简单的数据库管理框架,较为著名的就有Greendao和ORMLite,但是就数据分析来看,Greendao的效率是高于ORMLite及其他框架的,是目前该行业的领先者。
- LiteOrm LiteOrm是一个小巧、强大、比系统自带数据库操作性能快1倍的 android ORM 框架类库,开发者一行代码实现数据库的增删改查操作,以及实体关系的持久化和自动映射。
- xutils3 xUtils 包含了orm, http(s), image, view注解, 但依然很轻量级(246K), 并且特性强大, 方便扩展。
6.依赖注入
- xutils3 xUtils 包含了orm, http(s), image, view注解, 但依然很轻量级(246K), 并且特性强大, 方便扩展。
- AndroidAnnotations AndroidAnnotations 旨在加快Android开发的效率。通过使用它开放出来的注解api,你几乎可以使用在任何地方, 大大的减少了无关痛痒的代码量,让开发者能够抽身其外,有足够的时间精力关注在真正的业务逻辑上面。而且通过简洁你的代码,也提高了代码的稳定性和后期的维护成本。
- RoboGuice 一个Android上的依赖注入框架。
- Butterknife ButterKnife是一个专注于Android系统的View注入框架。
- Dagger Dagger是一个完全静态的,在编译时进行依赖注入的框架。
7.图表框架
- hellocharts hellocharts是一个用来生成统计图表的三方库,目前支持折线图、柱状图和饼状图等常见图表。支持缩放、滑动和动画效果。是一个非常实用的Android平台的图标库。
- WilliamChart WilliamChart 是一个为安卓项目提供图表控件的开源库,他实现了数字的可视化,用作者的话说“我者喜欢看起来干净简单的图表,不想要那么多花哨的功能”。
- MPAndroidChart MPAndroidChart 是一款专门用于Android绘制图表的库,相当强大,而且提供iOS版本。对双端开发者来说是个福音。iOS地址:https://github.com/danielgindi/Charts
8.后台处理
- Android Priority Job Queue Android Priority Job Queue 是一款专门为Android平台编写,实现了Job Queue的后台任务队列类库,能够轻松的在后台执行定时任务,提高用户体验和应用的稳定性。
- Tape 一个轻快的,事务性的,基于文件的FIFO的库。
9.事件总栈
- Otto otto基于Guava项目的Android支持库,如果你在Android程序开发的过程中想要不同的组件之间进行有效的通信可以使用这个库。这个也是那个
Square公司的,不得不说这公司相当强大。
- EventBus EventBus能够简化各组件间的通信,让我们的代码书写变得简单,能有效的分离事件发送方和接收方(也就是解耦的意思),能避免复杂和容易出错的依赖性和生命周期问题。
10.响应式
- Agera agera是一个能帮助Android开发者更好的开发函数式,异步和响应式程序的框架,要求Android的SDK版本在9以上。
- Rx系列 RxJava JVM上的响应式扩展;RxJavaJoins 为RxJava提供Joins操作;RxAndroid Android上的响应式扩展,在RxJava基础上添加了Android线程调度;RxBinding 提供用RxJava绑定Android UI的API。
11.Log日志
- Hugo Hugo可以打印一个方法的输入参数和函数的运行时间。可作为Android性能调优工具。
- Timber 基于Android原生Log的logger,小巧易扩展。
- Logger 简单、漂亮、强大的Android logger。
12.测试框架
- Mockito Mockito是mocking框架,它让你用简洁的API做测试。而且Mockito简单易学,它可读性强和验证语法简洁。
- Robolectric Robolectric是一个单元测试框架,测试是运行在jvm上的,只需要几秒钟。
- Robotium Robotium是一款国外的自动化测试框架,是一款免费的Android UI测试工具,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。有条件的请科学上网。
13.性能优化
- ACRA(崩溃报告) Android应用程序崩溃报告。
- LeckCanary(内存泄漏检测) 嗯……好吧又是那
个Square公司开源的……
14.下拉刷新、上拉加载
- android-Ultra-Pull-To-Refresh 这是现在已经停止维护的下拉刷新项目的替代方案。继承于ViewGroup可以包含任何View。功能比SwipeRefreshLayout强大。使用起来非常简单。良好的设计,如果你想定制自己的UI样式,非常简单,就像给ListView加一个Header View那么简单。
- Phoenix Pull-to-Refresh 这个就是一个词:酷炫。
- SmartRefreshLayout 正如名字所说,SmartRefreshLayout是一个“聪明”或者“智能”的下拉刷新布局,由于它的“智能”,它不只是支持所有的View,还支持多层嵌套的视图结构。它继承自ViewGroup 而不是FrameLayout或LinearLayout,提高了性能。 也吸取了现在流行的各种刷新布局的优点,包括谷歌官方的 SwipeRefreshLayout,其他第三方的 Ultra-Pull-To-Refresh、TwinklingRefreshLayout 。还集成了各种炫酷的 Header 和 Footer。 SmartRefreshLayout的目标是打造一个强大,稳定,成熟的下拉刷新框架,并集成各种的炫酷、多样、实用、美观的Header和Footer。其实我是推荐这个的,不为别的,就为默认中文文档!!!!
关于部分框架具体的使用,后面会一一介绍,在这里只是贴一下框架地址。