2016 Android Top 10 Library
過去的 2016 年,開源社區(qū)異常活躍,很多個(gè)人與公司爭(zhēng)相開源自己的項(xiàng)目,讓人眼花繚亂,然而有些項(xiàng)目只是曇花一現(xiàn),有些項(xiàng)目卻持久創(chuàng)造價(jià)值,為開發(fā)者提供了極大的便利,這些終究由時(shí)間來判斷。今天,我就來整理一篇,我個(gè)人認(rèn)為的 2016 年對(duì) Android 開發(fā)有巨大幫助的,甚至改變了 Android 開發(fā)方式的開源庫(kù),但是,僅限個(gè)人認(rèn)為,不具有任何權(quán)威性。
1. RxJava
地址:https://github.com/ReactiveX/RxJava
2016 年 Android 界最火的莫過于 RxJava 了,如果你還不知道 RxJava,你所在公司,或者你所在的項(xiàng)目還沒有使用 RxJava,那真的是有點(diǎn) out 了,RxJava 不僅大大簡(jiǎn)化了代碼,甚至可以說改變了我們的開發(fā)方式。
RxJava 是一種函數(shù)式、響應(yīng)式的異步操作庫(kù),它讓你的代碼更加簡(jiǎn)潔,真正的讓你的代碼寫到爽!由于 RxJava 用過的都說好,基于此,GitHub 上衍生了一堆比如 RxAndroid、RxBus、RxPermission 等之類的開源庫(kù),足以說明它的影響力。
關(guān)于 RxJava 的文章網(wǎng)上一大堆,它的使用方法與好處我就不多說了,請(qǐng)自行去搜索了解,總之,身為 Android 開發(fā)者,到現(xiàn)在你還不知道 RxJava,簡(jiǎn)直了!
2. Retrofit
地址:https://github.com/square/retrofit
如果有人問我,Android 界***用的網(wǎng)絡(luò)請(qǐng)求庫(kù)是什么?在之前可能會(huì)有人回答 android-async-http、Volley、OkHttp(準(zhǔn)確說,OkHttp 是一個(gè) http 請(qǐng)求客戶端) 之類的,但是 16 年過后,我會(huì)告訴你 Retrofit 是***用的網(wǎng)絡(luò)請(qǐng)求庫(kù)。
Retrofit 完全 RESTful 風(fēng)格的 api 網(wǎng)絡(luò)請(qǐng)求庫(kù),解耦更徹底,源碼設(shè)計(jì)超多的設(shè)計(jì)模式,值得大家學(xué)習(xí),另外擴(kuò)展性非常好,支持各種配置來滿足你的需求,最最重要的是,如果你的項(xiàng)目使用了 RxJava,那么 Retrofit 可以***結(jié)合,我只能說 Prefect!再次驗(yàn)證了那句話:Square 出品,必屬精品!
3. EventBus
地址:https://github.com/greenrobot/EventBus
試想這么一個(gè)場(chǎng)景,在 A 頁面打開 B 頁面,然后 B 頁面打開了 C 頁面,C頁面又打開了D頁面,而且還需要傳遞參數(shù),在D頁面修改了一些信息,然后這些信息更新之后,A、B、C頁面很可能都需要對(duì)應(yīng)的進(jìn)行數(shù)據(jù)更新,碰到這種需求該怎么處理?
有人說用 startActivityForResult(),你可以試下,有多么難處理,還有人想到用廣播,這個(gè)當(dāng)然可以,因?yàn)閺V播是全局的,主要進(jìn)行注冊(cè)都可以通知到每一個(gè)頁面,但是我很不喜歡用廣播,每次用廣播都要走那一套流程,很麻煩,而且很重。
而如果你知道 Eventbus,那么一切都非常的簡(jiǎn)單。
EventBus 是一個(gè)事件管理平臺(tái),以事件驅(qū)動(dòng)的方式來簡(jiǎn)化事件傳遞邏輯,可以把它想象成輕量級(jí)的 BroadcastReceiver,不過,EventBus 并不是 16 年才開始進(jìn)入大眾視野的,很早就開源了,只是這個(gè)庫(kù)太實(shí)用了,時(shí)至今日,它仍然很火,使用起來非常方便。
值得注意的是:EventBus 固然好用,但是不要過度使用,因?yàn)橐坏┠愕拇a大量使用 EventBus,會(huì)致使代碼可讀性稍差,而且出了問題不太好定位。所以建議只在特定的場(chǎng)景使用,切莫貪杯!
4. Glide、Fresco
圖片加載可能跟網(wǎng)絡(luò)請(qǐng)求一樣,基本是所有 App 開發(fā)必備的功能,選擇一款成熟穩(wěn)定的圖片加載庫(kù)重要性不言而喻,目前主流的圖片加載有 Picasso、Glide、Fresco,Glide 是 Google 員工基于 Picasso 基礎(chǔ)上進(jìn)行開發(fā)的,所以自然各方面比 Picasso 更有優(yōu)勢(shì),而且支持 Gif,所以推薦大家優(yōu)先選擇 Glide 庫(kù),官方地址:
https://github.com/bumptech/glide
如果你的項(xiàng)目需要大量使用圖片,比如是類似 Instagram 一類的圖片社交 App ,那么推薦使用 Fresco。Fresco 是 Facebook 作品,關(guān)于內(nèi)存的占用優(yōu)化更好,但是同時(shí)包也更大,門檻也更高,初級(jí)工程師不建議使用。官方地址:
https://github.com/facebook/fresco
這兩款圖片加載庫(kù),基本算是在 16 年使用最多,被認(rèn)可***的兩個(gè)圖片加載庫(kù)了。
5. LeakCanary
地址:https://github.com/square/leakcanary
開發(fā)者最關(guān)心的除了完成功能外,其次就是會(huì)不會(huì)造成內(nèi)存泄露了,其實(shí)檢測(cè)內(nèi)存泄露在 Java 領(lǐng)域有很多種方法與工具,但是針對(duì) Android 都不夠方便,而良心公司 Square 開源了一款針對(duì) Android 平臺(tái)的內(nèi)存泄露檢測(cè)工具 LeakCanary,集成簡(jiǎn)單,使用方便,平時(shí)測(cè)試的過程中就自動(dòng)記錄了內(nèi)存泄露的位置,甚至幫你定位到代碼級(jí)別,強(qiáng)烈推薦。
6. ButterKnife
地址:https://github.com/JakeWharton/butterknife
我想應(yīng)該沒有人沒聽過這個(gè)庫(kù)了吧?ButterKnife 是 Android 之神 JakeWharton 的大作,已經(jīng)開源了很長(zhǎng)時(shí)間,然而在 2016 年它的使用熱度依然不減,它可以讓你避免無休止的 findViewById() 代碼,具體用法我就不多說了,使用起來比較簡(jiǎn)單。
7. Realm
地址:https://realm.io/
說到 Realm 不得不提到一個(gè) ORM 的概念。何為 ORM 呢?ORM 是 Object Relation Mapping 的縮寫,翻譯過來就是對(duì)象關(guān)系映射。這是相對(duì)于數(shù)據(jù)庫(kù)的,我們知道 Android 中使用的數(shù)據(jù)庫(kù)是 SQLite,而且 Android SDK 自帶操作數(shù)據(jù)庫(kù)的接口,而實(shí)際我們?cè)谑褂玫倪^程往往需要把查詢的數(shù)據(jù)轉(zhuǎn)換到一個(gè) Java Object,也就是所謂的 Model,比如一般是這樣:
操作起來是不是很麻煩?而且可讀性超差,而有了 ORM 我們寫代碼可能會(huì)是類似這樣:
查詢數(shù)據(jù)是這樣:
是不是非常方便?代碼寫起來更像是面向?qū)ο螅皇且粋€(gè)個(gè)的裸寫 SQL 了,這就是所謂的 ORM。
而 Android 界的 ORM 框架有很多,比如 GreeDao、SugarORM、ActiveAndroid 等等,但是我推薦大家的 ORM 框架以上都不是,是叫做 Realm。
Realm 是一種面向移動(dòng)端的新型輕量數(shù)據(jù)庫(kù),而且是開源的,跟 SQLite 完全不一樣,性能上秒殺 SQLite,支持 Java、Android、iOS 各平臺(tái),我們?cè)趯?shí)際項(xiàng)目中采用過,體驗(yàn)下來各方面都很不錯(cuò),所以推薦大家嘗試下 Realm。
8. Dagger 2
地址:https://github.com/google/dagger
依賴注入的概念估計(jì)大家都聽過,不理解的不妨搜索了解下,Android 領(lǐng)域比較著名的依賴注入庫(kù)莫過于 Dagger 了,基于注解,使用起來異常方便。
Dagger 起初是 Square 開源的,后來 Google 在此技術(shù)上進(jìn)行了改進(jìn)與優(yōu)化,去除了反射,編譯時(shí)進(jìn)行依賴注入,性能上有大幅提升,取名 Dagger 2,Square 之前開源的 Dagger 已不建議使用。其實(shí)之前大家對(duì) Dagger 的關(guān)注程度沒有那么高,一般都是屬于中、高級(jí)工程師才會(huì)關(guān)注使用,但是 16 年 Android 的架構(gòu)被提上日程,各種 MVP、MVVM、Clean 架構(gòu)等討論的較多,而 Dagger 作為承載這些架構(gòu)重要的一環(huán)被越來越多的開發(fā)者使用,所以 16 年我們看到 Dagger 的身影越來越多,所以,Dagger 被我列為 16 年還算是比較火,比較實(shí)用的 Top 10 Android Library。
9. android-architecture
地址:https://github.com/googlesamples/android-architecture
上面說了,16 年 Android 架構(gòu)被越來越多的開發(fā)者關(guān)注,國(guó)內(nèi)外關(guān)于架構(gòu)的探討比較活躍,大家熟知的 MVC、MVP、MVVM、Clean 等,就在大家爭(zhēng)執(zhí)哪個(gè)更好,Android 開發(fā)到底該怎樣架構(gòu)的時(shí)候,Google 開源了一個(gè) Android 架構(gòu)的官方指導(dǎo),涉及 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 開發(fā)中除了我們以上用到的各種實(shí)用庫(kù)之外,我們往往還會(huì)涉及到各種 UI 效果的實(shí)現(xiàn),對(duì)于移動(dòng)開發(fā),界面開發(fā)其中是很重要的一環(huán),而 16 年針對(duì) Android 開發(fā)有人開源整理了這么一個(gè)庫(kù),里面網(wǎng)羅了所有你見過的、沒見過的各種 UI 效果,涉及 Material、Layout、Button、List、ViewPager、Dialog、Menu、Parallax、Progress 等等,而且有相對(duì)應(yīng)的截圖、gif 展示,以后應(yīng)對(duì)設(shè)計(jì)師各種效果的時(shí)候有很大的參考幫助作用。
【本文為51CTO專欄作者“stormzhang”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者(微信公眾號(hào):googdev)】