刚刚过去的2016年,开源社区异常活跃。许多个人和公司竞相开源自己的项目,看得人眼花缭乱。为方便起见,这些最终还是以时间来评判。今天整理一篇文章,个人认为对2016年Android开发有很大的帮助,甚至改变了Android开发方法的开源库,但仅在我看来,没有任何权威。1、RxJava地址:https://github.com/ReactiveX/RxJava2016年,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!我再次验证了那句话:方出品,必属精品!3、EventBus地址:https://github.com/greenrobot/EventBus想象这样一个场景,在A页面打开B页面,然后C页面打开C页面,C页面打开D页面,同样需要传参,修改一些D页面的信息,信息更新后,A页面、B页面、C页面可能都需要相应的数据更新。如何处理这个需求?有人说要用startActivityForResult(),你可以试试。处理起来有多难,有人就想到了用广播,因为广播是全局的,每个页面都可以通过注册通知,但是我实在不喜欢用广播。每次用广播都要走那套程序,很麻烦,也很繁重。如果你知道Eventbus,那么一切都非常简单。EventBus是一个事件管理平台,以事件驱动的方式简化了事件传递逻辑。它可以被认为是一个轻量级的BroadcastReceiver。然而,EventBus直到16年前才进入大众视野。很早就开源了,但是这个库太好用了,到今天还是很流行,用起来也很方便。值得注意的是,EventBus好用,但不要过度使用,因为一旦你的代码大量使用EventBus,会使代码的可读性变差,也不容易定位问题。所以建议只在特定场景下使用,不要贪多!4.Glide和Fresco图片加载可能和网络请求一样。它们基本上是所有App开发的必备功能。选择一个成熟稳定的图片加载库的重要性不言而喻。比如目前主流的图片加载有Picasso、Glide、Fresco。Glide是谷歌员工在Picasso的基础上开发的,自然比Picasso更有优势,而且支持Gif。所以建议大家优先使用Glide库。官方地址:https://github.com/bumptech/glide如果你的项目需要用到大量的图片,比如Instagram这样的图片社交app,那么推荐Fresco。Fresco是Facebook的作品。对内存使用做了更好的优化,但同时封装更大,门槛更高。不推荐给初级工程师。官方地址:https://github.com/facebook/fresco这两个图片加载库基本上是2016年使用最多的两个图片加载库,被公认为最好的。5.LeakCanary地址:https://github.com/square/leakcanary开发者最关心的不仅仅是完成功能,还有会不会造成内存泄漏。其实在Java领域检测内存泄漏的方法和工具有很多。但是对于Android来说还是不够方便,有良心的Square公司开源了一个Android平台的内存泄漏检测工具LeakCanary。代码级别,强烈推荐。6.ButterKnife地址:https://github.com/JakeWharton/butterknife这个库我想应该没有人没听说过吧?ButterKnife是安卓大神JakeWharton的杰作,开源了很久。不过2016年它的使用热度依旧不减,它可以让你免去没完没了的findViewById()代码,具体用法我就不多说了,使用还是比较简单的。7.Realm地址:https://realm.io/说到Realm,不得不提一个ORM的概念。什么是ORM?ORM是ObjectRelationMapping的缩写,翻译过来就是对象关系映射。这是相对于数据库而言的。我们知道Android中使用的数据库是SQLite,AndroidSDK自带了操作数据库的接口。其实我们使用的过程中经常需要将查询数据转换成JavaObject,也就是所谓的Model,比如一般是这样的:操作起来是不是很麻烦?而且可读性太差了,而用ORM,我们可能会写这样的代码:查询数据这样:是不是很方便?代码写的更像面向对象的,而不是一条一条的写SQL,这就是所谓的ORM。Android世界的ORM框架有很多,比如GreeDao、SugarORM、ActiveAndroid等等,但是我推荐大家的ORM框架不是上面那个,就叫Realm吧。Realm是一种面向移动端的新型轻量级数据库,开源。它与SQLite完全不同。在性能上超越SQLite,支持Java、Android、iOS平台。我们在实际项目中使用过,各方面都体验到了。很好,所以推荐大家试试Realm。8.Dagger2地址:https://github.com/google/dagger依赖注入的概念大家应该都听说过吧。如果你不明白,不妨搜索一下。Android领域比较出名的依赖注入库是Dagger,基于注解,使用非常方便。Dagger最初由Square开源。后来Google对这项技术进行了改进和优化,去除了反射,在编译期进行了依赖注入,性能得到了极大的提升。取名为Dagger2,之前Square开源的Dagger,不再推荐使用。事实上,之前人们并没有那么关注Dagger。一般中高级工程师都会关注它的使用。不过Android架构在2016年已经提上日程,各种MVP、MVVM、Clean架构讨论得比较多。Dagger作为承载这些架构的重要一环,被越来越多的开发者使用,所以在2016年我们看到的Dagger越来越多,所以Dagger被我列为2016年比较流行和实用的。前10名Android库。9.android-architecture地址:https://github.com/googlesamples/android-architecture如上所述,2016年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展示,对设计师日后处理各种效果时有很大的参考和帮助。【本文为专栏作者“stormzhang”原创稿件,转载请联系原作者(微信公众号:googdev)】点此查看该作者更多好文
