2016 Android Top 10 Library
阅读本文大概需要 10.24 分钟。
过去的 2016 年,开源社区异常活跃,很多个人与公司争相开源自己的项目,让人眼花缭乱,然而有些项目只是昙花一现,有些项目却持久创造价值,为开发者提供了极大的便利,这些终究由时间来判断。今天,我就来整理一篇,我个人认为的 2016 年对 Android 开发有巨大帮助的,甚至改变了 Android 开发方式的开源库,但是,仅限个人认为,不具有任何权威性。
1. RxJava
地址:https://github.com/ReactiveX/RxJava
2016 年 Android 界最火的莫过于 RxJava 了,如果你还不知道 RxJava,你所在公司,或者你所在的项目还没有使用 RxJava,那真的是有点 out 了,RxJava 不仅大大简化了代码,甚至可以说改变了我们的开发方式。
RxJava 是一种函数式、响应式的异步操作库,它让你的代码更加简洁,真正的让你的代码写到爽!由于 RxJava 用过的都说好,基于此,GitHub 上衍生了一堆比如 RxAndroid、RxBus、RxPermission 等之类的开源库,足以说明它的影响力。
关于 RxJava 的文章网上一大堆,它的使用方法与好处我就不多说了,请自行去搜索了解,总之,身为 Android 开发者,到现在你还不知道 RxJava,简直了!
2. Retrofit
地址:https://github.com/square/retrofit
如果有人问我,Android 界最好用的网络请求库是什么?在之前可能会有人回答 android-async-http、Volley、OkHttp(准确说,OkHttp 是一个 http 请求客户端) 之类的,但是 16 年过后,我会告诉你 Retrofit 是最好用的网络请求库。
Retrofit 完全 RESTful 风格的 api 网络请求库,解耦更彻底,源码设计超多的设计模式,值得大家学习,另外扩展性非常好,支持各种配置来满足你的需求,最最重要的是,如果你的项目使用了 RxJava,那么 Retrofit 可以完美结合,我只能说 Prefect!再次验证了那句话:Square 出品,必属精品!
3. EventBus
地址:https://github.com/greenrobot/EventBus
试想这么一个场景,在 A 页面打开 B 页面,然后 B 页面打开了 C 页面,C 页面又打开了 D 页面,而且还需要传递参数,在 D 页面修改了一些信息,然后这些信息更新之后,A、B、C 页面很可能都需要对应的进行数据更新,碰到这种需求该怎么处理?
有人说用 startActivityForResult(),你可以试下,有多么难处理,还有人想到用广播,这个当然可以,因为广播是全局的,主要进行注册都可以通知到每一个页面,但是我很不喜欢用广播,每次用广播都要走那一套流程,很麻烦,而且很重。
而如果你知道 Eventbus,那么一切都非常的简单。
EventBus 是一个事件管理平台,以事件驱动的方式来简化事件传递逻辑,可以把它想象成轻量级的 BroadcastReceiver,不过,EventBus 并不是 16 年才开始进入大众视野的,很早就开源了,只是这个库太实用了,时至今日,它仍然很火,使用起来非常方便。
值得注意的是:EventBus 固然好用,但是不要过度使用,因为一旦你的代码大量使用 EventBus,会致使代码可读性稍差,而且出了问题不太好定位。所以建议只在特定的场景使用,切莫贪杯!
4. Glide、Fresco
图片加载可能跟网络请求一样,基本是所有 App 开发必备的功能,选择一款成熟稳定的图片加载库重要性不言而喻,目前主流的图片加载有 Picasso、Glide、Fresco,Glide 是 Google 员工基于 Picasso 基础上进行开发的,所以自然各方面比 Picasso 更有优势,而且支持 Gif,所以推荐大家优先选择 Glide 库,官方地址:
https://github.com/bumptech/glide
如果你的项目需要大量使用图片,比如是类似 Instagram 一类的图片社交 App ,那么推荐使用 Fresco。Fresco 是 Facebook 作品,关于内存的占用优化更好,但是同时包也更大,门槛也更高,初级工程师不建议使用。官方地址:
https://github.com/facebook/fresco
这两款图片加载库,基本算是在 16 年使用最多,被认可最高的两个图片加载库了。
5. LeakCanary
地址:https://github.com/square/leakcanary
开发者最关心的除了完成功能外,其次就是会不会造成内存泄露了,其实检测内存泄露在 Java 领域有很多种方法与工具,但是针对 Android 都不够方便,而良心公司 Square 开源了一款针对 Android 平台的内存泄露检测工具 LeakCanary,集成简单,使用方便,平时测试的过程中就自动记录了内存泄露的位置,甚至帮你定位到代码级别,强烈推荐。
## 6. ButterKnife
地址:https://github.com/JakeWharton/butterknife
我想应该没有人没听过这个库了吧?ButterKnife 是 Android 之神 JakeWharton 的大作,已经开源了很长时间,然而在 2016 年它的使用热度依然不减,它可以让你避免无休止的 findViewById() 代码,具体用法我就不多说了,使用起来比较简单。
7. Realm
地址:https://realm.io/
说到 Realm 不得不提到一个 ORM 的概念。何为 ORM 呢?ORM 是 Object Relation Mapping 的缩写,翻译过来就是对象关系映射。这是相对于数据库的,我们知道 Android 中使用的数据库是 SQLite,而且 Android SDK 自带操作数据库的接口,而实际我们在使用的过程往往需要把查询的数据转换到一个 Java Object,也就是所谓的 Model,比如一般是这样:
操作起来是不是很麻烦?而且可读性超差,而有了 ORM 我们写代码可能会是类似这样:
查询数据是这样:
是不是非常方便?代码写起来更像是面向对象,而不是一个个的裸写 SQL 了,这就是所谓的 ORM。
而 Android 界的 ORM 框架有很多,比如 GreeDao、SugarORM、ActiveAndroid 等等,但是我推荐大家的 ORM 框架以上都不是,是叫做 Realm。
Realm 是一种面向移动端的新型轻量数据库,而且是开源的,跟 SQLite 完全不一样,性能上秒杀 SQLite,支持 Java、Android、iOS 各平台,我们在实际项目中采用过,体验下来各方面都很不错,所以推荐大家尝试下 Realm。
8. Dagger 2
地址:https://github.com/google/dagger
依赖注入的概念估计大家都听过,不理解的不妨搜索了解下,Android 领域比较著名的依赖注入库莫过于 Dagger 了,基于注解,使用起来异常方便。
Dagger 起初是 Square 开源的,后来 Google 在此技术上进行了改进与优化,去除了反射,编译时进行依赖注入,性能上有大幅提升,取名 Dagger 2,Square 之前开源的 Dagger 已不建议使用。其实之前大家对 Dagger 的关注程度没有那么高,一般都是属于中、高级工程师才会关注使用,但是 16 年 Android 的架构被提上日程,各种 MVP、MVVM、Clean 架构等讨论的较多,而 Dagger 作为承载这些架构重要的一环被越来越多的开发者使用,所以 16 年我们看到 Dagger 的身影越来越多,所以,Dagger 被我列为 16 年还算是比较火,比较实用的 Top 10 Android Library。
9. android-architecture
地址:https://github.com/googlesamples/android-architecture
上面说了,16 年 Android 架构被越来越多的开发者关注,国内外关于架构的探讨比较活跃,大家熟知的 MVC、MVP、MVVM、Clean 等,就在大家争执哪个更好,Android 开发到底该怎样架构的时候,Google 开源了一个 Android 架构的官方指导,涉及 mvp、mvp-loaders、databinding、mvp-clean、mvp-dagger、mvp-contentproviders、mvp-rxjava 等,分别在各自指定的分支下,有非常大的参考意义,可以算是 Android 界的一大步。
10. awesome-android-ui
地址:https://github.com/wasabeef/awesome-android-ui
Android 开发中除了我们以上用到的各种实用库之外,我们往往还会涉及到各种 UI 效果的实现,对于移动开发,界面开发其中是很重要的一环,而 16 年针对 Android 开发有人开源整理了这么一个库,里面网罗了所有你见过的、没见过的各种 UI 效果,涉及 Material、Layout、Button、List、ViewPager、Dialog、Menu、Parallax、Progress 等等,而且有相对应的截图、gif 展示,以后应对设计师各种效果的时候有很大的参考帮助作用。
以上就是我总结的,我个人认为的,在 2016 年的 Android 开发中,比较实用的、对你的开发有很大帮助的一些 Android Library,除了对你们的开发效率有提升之外,还能够了解其原理,阅读其优秀源码,参考其代码设计,是绝佳的一份学习资料,希望每个人在 2017 年都能在技术上取得很大进步!
推荐阅读:
为什么你很努力,进步却很慢?
2017 年的第一课「如何提高自己的阅读能力?」
我的 2016
「其实,我在扯淡。」
公号赞助商:
2016 Android Top 10 Library相关推荐
- 2016 Top 10 Android Library
过去的 2016 年,开源社区异常活跃,很多个人与公司争相开源自己的项目,让人眼花缭乱,然而有些项目只是昙花一现,有些项目却持久创造价值,为开发者提供了极大的便利,这些终究由时间来判断.今天,我就来整 ...
- android手机销量排行,历年来销售量最高的手机Top 10排行榜,竟然没有Android手机...
原标题:历年来销售量最高的手机Top 10排行榜,竟然没有Android手机 近日,外媒AndroidAuthority统计了历年来全球销售量最高的手机Top 10排行榜,有趣的是在排行榜上的手机大多 ...
- 香港买android手机,2015 Q3中国大陆/香港/台湾最热门Android手机Top 10排行榜
原标题:2015 Q3中国大陆/香港/台湾最热门Android手机Top 10排行榜 前瞻科技快讯:昨晚,91 门户晒出 2015 年 Q3 中国大陆/香港/台湾最热门 Android 手机对比!To ...
- 机器视觉解决方案提供商TOP 10—2016
ViDi Systems SA被Manufaturing Tech Insights评选为2016年十大生产制造行业的机器视觉解决方案提供商之一. 2016年6月30日,美国城市费拉蒙,经Manufa ...
- 7月Python和机器学习最佳开源项目Top 10!
[导读]七月就要结束了,在即将到来的 7 月最后一个周末,人工智能头条为大家整理了本月 ML 和 Python 最受欢迎的十大开源项目.就算放假在家也可以知道大家现在都在学些什么,学习放假两不误.这个 ...
- 神策数据荣膺“2017 年度最受欢迎企业服务商 Top 10”
2017 年 11 月 17 日,IT 桔子与拓扑社共同举办的 2017 IT 桔子企业服务峰会暨拓扑社成立两周年庆典,大数据分析服务公司神策数据以其技术领域的创新实力及专业的服务团队,获得主办方的一 ...
- 2018明星学术公众号TOP 10重磅发布,PaperWeekly再度入选
200 +学术公众号受到提名 21 个学术自媒体入围票选 一份科研人不容错过的 学术公众号榜单-- 为了促进学术传播.传递优质科研资源.服务广大科研群体,"科研圈"从 2016 年 ...
- Top 10 Digital Transformation Trends For 2020
文章目录 Top 10 Digital Transformation Trends For 2020 1. 5G for You and Me 2. A faster WiFi for a faste ...
- 在Android Studio中将Android工程变为Library使用
在Android Studio中将Android工程变为Library使用 转载2016-03-28 10:43:58 有时候网上会有些工程格式不是我们想要的Library格式可以直接给AS使用.这时 ...
- 最受欢迎的 Top语言及其 Top 10漏洞
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 Veracode 公司发布报告,基于所扫描的13万款 app,说明了其中最常见的安全问题.不管你用的是 .NET.C++.Java.J ...
最新文章
- MPB:利用无菌植物和可培养细菌体系研究根系微生物组功能
- NeurIPS 2019 少样本学习研究亮点全解析
- 还在忍受限速网盘?来搭建一套自己的私有网盘!
- 图解Redis之数据结构篇——压缩列表
- POJ 2312 Battle City 优先队列+BFS
- MySQL查看状态及简单优化
- oracle执行脚本顺序执行吗,【ORACLE】记录通过执行Oracle的执行计划查询SQL脚本中的效率问题 - 不及格的飞鱼...
- 无法确定当前的订阅失效日期_元器件失效率与失效分布
- hdu2847(2009多校第四场) 01串添加最少01使被k整除(暴力)
- Android中免Root实现Hook的Dexposed框架实现原理解析以及如何实现应用的热修复
- java tcr,运动入门 通勤健身良伴 2019款 Giant TCR SL2 评测
- java 扁平化_java 扁平化输出json所有节点key/value
- python创建函数、可以接受任意多个整数参数并求和_如何实现Python函数的参数不限个数?...
- KubeEdge SIG AI发布首个分布式协同AI Benchmark调研
- wacom怎么调压感_要怎么设置PS的画笔 才能充分利用到数位板压感?
- Batch Normalization原理与实战
- 【黑客免杀攻防】读书笔记1 - 初级免杀基础理论(反病毒软件特征码提取介绍、免杀原理、壳)...
- yandex浏览器_15分钟内制作自己的文本编辑器:Yandex的实践
- mysql 授予数据库权限_MySQL:授予**对数据库的所有**权限
- 医学影像组学人工智能应用实践
热门文章
- 常见的SQL错误和解决方法
- 【linux】——FTP出现500 OOPS: cannot change directory的解决方法
- Mac查看本机公网IP
- 达芬奇调色软件 18 for Mac
- Fusion Studio 17 for Mac(视频后期特效合成软件)
- Cinema 4D R25 for mac三维动画设计
- 如何在macOS Big Sur中使用快速用户切换?
- UITextFiled和UITextView限制字数和输入特殊字符的总结
- 《Adobe After Effects CS5经典教程》——1.6 预览
- 汇编---3---物理地址