异步操作
1、异步的基于事件的响应式扩展库——RxJava(RxAndroid)
https://github.com/ReactiveX/RxJava
https://github.com/ReactiveX/RxAndroid
新手入门最佳教程:给 Android 开发者的 RxJava 详解
国内RxJava教父——大头鬼Bruce
GitHub:https://github.com/lzyzsd/Awesome-RxJava
博客:http://blog.csdn.net/lzyzsd/article/details/41833541
RxJava 在 GitHub 主页上的自我介绍是 “a library for composing asynchronous and event-based programs using observable sequences for the Java VM”(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)。这就是 RxJava ,概括得非常精准。
网络请求
1、最火android网络请求框架——Retrofit
https://github.com/square/retrofit
参考文章:
Retrofit2 完全解析 探索与okhttp之间的关系
30分钟上手最火android网络请求框架Retrofit
RxJava 与 Retrofit 结合的最佳实践
Retrofit与okhttp共同出自于Square公司,retrofit就是对okhttp做了一层封装。把网络请求都交给给了Okhttp,我们只需要通过简单的配置就能使用retrofit来进行网络请求了。
依赖注入
1、google依赖注入框架——Dagger 2
http://square.github.io/dagger/
参考文章:Android常用开源工具(1)-Dagger2入门
Dagger2是源码级注解框架,所有不用担心注解会影响程序效率。
事件总线(事件发布 / 订阅)
1、EventBus
https://github.com/greenrobot/EventBus
参考示例文章:http://blog.csdn.net/lmj623565791/article/details/40794879
优点:零耦合
缺点:主要是通过反射实现,牺牲了一点点效率。
通俗的理解:在一个单例内部维持着一个map对象,register会把当前类中匹配的方法存入这个map,post无非就是根据参数去查找方法,进行反射调用。
日志
1、简单、功能强大的logger
https://github.com/orhanobut/logger(这个是老外写的)
特点:可以打印xml、json格式
2、国产功能强大的LogUtils
https://github.com/pengwei1024/LogUtils
特点:
支持直接打印数据集合,如List、Set、Map、数组等
全局配置log输出
不需要设置tag
准确显示调用方法、行,快速定位所在文件位置
支持android系统对象Intent、Bundle打印
性能监控
1、轻量级非侵入式的性能监控组件——BlockCanary
https://github.com/moduth/blockcanary
参考文章:BlockCanary — 轻松找出Android App界面卡顿元凶
阿里内多个Android项目接入并使用BlockCanary来优化Android应用的性能。
异常监测
1、自动探测内存泄露的开源项目:leakcanary
https://github.com/square/leakcanary
参考文章:http://blog.csdn.net/watermusicyes/article/details/46333925
2、ANR监测程序:ANR-WatchDog
https://github.com/SalomonBrys/ANR-WatchDog
实现原理:
ANR-WatchDog创建一个监测线程,该线程不断往UI线程post一个任务,然后睡眠固定时间,等该线程重新起来后检测之前post的任务是否执行了,如果任务未被执行,则生成ANRError,并终止进程。
数据存储
1、一个使用比较广泛的ORM框架:ORMLite
到现在为止,Android中ORM框架也已经有很多,比如ORMLite,Litepal, androrm,SugarORM, GreenDAO,ActiveAndroid, Realm等等。对于他们之间的对比,可能各有长短,所谓存在即为合理。其中,ORMLite应该是使用较为广泛的一个。
缺点:ORMLite是基于运行时的注解框架,对程序运行时的效率会有一点影响。
jar包下载地址:http://ormlite.com/releases/
参考文章:http://blog.csdn.net/lmj623565791/article/details/39121377
UI
1、一个好用的动画类库NineOldAndroids
https://github.com/JakeWharton/NineOldAndroids/
android3.0之后出了新的animation API,但是android3.0以下的不支持
这个库完成了这个兼容性,使得ValueAnimator、ObjectAnimator等新的动画api能不改一行代码,只修改import的包名就完全兼容到新的api。
比较常用的几个动画类是:ValueAnimator、ObjectAnimator和AnimatorSet,其中ObjectAnimator继承自ValueAnimator,AnimatorSet是动画集,可以定义一组动画。