2016 Top 10 Android Library

过去的 2016 年,开源社区异常活跃,不少我的与公司争相开源本身的项目,让人眼花缭乱,然而有些项目只是昙花一现,有些项目却持久创造价值,为开发者提供了极大的便利,这些终究由时间来判断。今天,我就来整理一篇,我我的认为的 2016 年对 Android 开发有巨大帮助的,甚至改变了 Android 开发方式的开源库,可是,仅限我的认为,不具备任何权威性。java

1. RxJava

地址:github.com/ReactiveX/R…android

2016 年 Android 界最火的莫过于 RxJava 了,若是你还不知道 RxJava,你所在公司,或者你所在的项目尚未使用 RxJava,那真的是有点 out 了,RxJava 不只大大简化了代码,甚至能够说改变了咱们的开发方式。git

RxJava 是一种函数式、响应式的异步操做库,它让你的代码更加简洁,真正的让你的代码写到爽!因为 RxJava 用过的都说好,基于此,GitHub 上衍生了一堆好比 RxAndroid、RxBus、RxPermission 等之类的开源库,足以说明它的影响力。github

关于 RxJava 的文章网上一大堆,它的使用方法与好处我就很少说了,请自行去搜索了解,总之,身为 Android 开发者,到如今你还不知道 RxJava,简直了!数据库

2. Retrofit

地址:github.com/square/retr…设计模式

若是有人问我,Android 界最好用的网络请求库是什么?在以前可能会有人回答 android-async-http、Volley、OkHttp(准确说,OkHttp 是一个 http 请求客户端) 之类的,可是 16 年事后,我会告诉你 Retrofit 是最好用的网络请求库。api

Retrofit 彻底 RESTful 风格的 api 网络请求库,解耦更完全,源码设计超多的设计模式,值得你们学习,另外扩展性很是好,支持各类配置来知足你的需求,最最重要的是,若是你的项目使用了 RxJava,那么 Retrofit 能够完美结合,我只能说 Prefect!再次验证了那句话:Square 出品,必属精品!ruby

3. EventBus

地址:github.com/greenrobot/…微信

试想这么一个场景,在 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 库,官方地址:

github.com/bumptech/gl…

若是你的项目须要大量使用图片,好比是相似 Instagram 一类的图片社交 App ,那么推荐使用 Fresco。Fresco 是 Facebook 做品,关于内存的占用优化更好,可是同时包也更大,门槛也更高,初级工程师不建议使用。官方地址:

github.com/facebook/fr…

这两款图片加载库,基本算是在 16 年使用最多,被承认最高的两个图片加载库了。

5. LeakCanary

地址:github.com/square/leak…

开发者最关心的除了完成功能外,其次就是会不会形成内存泄露了,其实检测内存泄露在 Java 领域有不少种方法与工具,可是针对 Android 都不够方便,而良心公司 Square 开源了一款针对 Android 平台的内存泄露检测工具 LeakCanary,集成简单,使用方便,平时测试的过程当中就自动记录了内存泄露的位置,甚至帮你定位到代码级别,强烈推荐。

6. ButterKnife

地址:github.com/JakeWharton…

我想应该没有人没听过这个库了吧?ButterKnife 是 Android 之神 JakeWharton 的大做,已经开源了很长时间,然而在 2016 年它的使用热度依然不减,它可让你避免无休止的 findViewById() 代码,具体用法我就很少说了,使用起来比较简单。

7. Realm

地址:realm.io/

说到 Realm 不得不提到一个 ORM 的概念。何为 ORM 呢?ORM 是 Object Relation Mapping 的缩写,翻译过来就是对象关系映射。这是相对于数据库的,咱们知道 Android 中使用的数据库是 SQLite,并且 Android SDK 自带操做数据库的接口,而实际咱们在使用的过程每每须要把查询的数据转换到一个 Java Object,也就是所谓的 Model,好比通常是这样:

public User selectWithId(int id) {
    User user = null;
    Cursor cursor = db.rawQuery("select * from users where id = ?", new String[]{id});
    if (cursor != null && cursor.moveToFirst()) {
        int age = cursor.getInt(cursor.getColumnIndex("age"));
        String userName = cursor.getString(cursor.getColumnIndex("user_name"));
        ...
        user = new User(age, userName, ...);
        cursor.close();
    }
    return user;
}复制代码

操做起来是否是很麻烦?并且可读性超差,而有了 ORM 咱们写代码可能会是相似这样:

查询数据是这样:

public User getUserById(int id) {
    return RealmResults<User> pups = realm.where(User.class)
                               .lessThan("id", 2)
                               .findAll();
}复制代码

是否是很是方便?代码写起来更像是面向对象,而不是一个个的裸写 SQL 了,这就是所谓的 ORM。

而 Android 界的 ORM 框架有不少,好比 GreenDao、SugarORM、ActiveAndroid 等等,可是我推荐你们的 ORM 框架以上都不是,是叫作 Realm。

Realm 是一种面向移动端的新型轻量数据库,并且是开源的,跟 SQLite 彻底不同,性能上秒杀 SQLite,支持 Java、Android、iOS 各平台,咱们在实际项目中采用过,体验下来各方面都很不错,因此推荐你们尝试下 Realm。

8. Dagger 2

地址:github.com/google/dagg…

依赖注入的概念估计你们都听过,不理解的不妨搜索了解下,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

地址:github.com/googlesampl…

上面说了,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

地址:github.com/wasabeef/aw…

Android 开发中除了咱们以上用到的各类实用库以外,咱们每每还会涉及到各类 UI 效果的实现,对于移动开发,界面开发其中是很重要的一环,而 16 年针对 Android 开发有人开源整理了这么一个库,里面网罗了全部你见过的、没见过的各类 UI 效果,涉及 Material、Layout、Button、List、ViewPager、Dialog、Menu、Parallax、Progress 等等,并且有相对应的截图、gif 展现,之后应对设计师各类效果的时候有很大的参考帮助做用。

以上就是我总结的,我我的认为的,在 2016 年的 Android 开发中,比较实用的、对你的开发有很大帮助的一些 Android Library,除了对大家的开发效率有提高以外,还可以了解其原理,阅读其优秀源码,参考其代码设计,是绝佳的一份学习资料,但愿每一个人在 2017 年都能在技术上取得很大进步!

本文原创发布于微信公众号 AndroidDeveloper,id: googdev,不止技术分享,还有更多扯淡,关注请慎重!

相关文章
相关标签/搜索