必知android開發(fā)庫(kù)

過去的 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)直了血当!

  1. 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 出品兜粘,必屬精品!

  1. 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)景使用,切莫貪杯蜈七!

  1. 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ù)了。

  1. 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)單娩怎。

  1. 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茵瀑。

  1. 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贺奠。

  1. 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 界的一大步。

  1. 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í)候有很大的參考幫助作用荒吏。

以上就是我總結(jié)的敛惊,我個(gè)人認(rèn)為的,在 2016 年的 Android 開發(fā)中绰更,比較實(shí)用的瞧挤、對(duì)你的開發(fā)有很大幫助的一些 Android Library,除了對(duì)你們的開發(fā)效率有提升之外儡湾,還能夠了解其原理特恬,閱讀其優(yōu)秀源碼,參考其代碼設(shè)計(jì)徐钠,是絕佳的一份學(xué)習(xí)資料癌刽,希望每個(gè)人在 2017 年都能在技術(shù)上取得很大進(jìn)步!

推薦閱讀:
為什么你很努力,進(jìn)步卻很慢显拜?
2017 年的第一課「如何提高自己的閱讀能力衡奥?」
我的 2016

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市远荠,隨后出現(xiàn)的幾起案子矮固,更是在濱河造成了極大的恐慌,老刑警劉巖譬淳,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件档址,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡瘦赫,警方通過查閱死者的電腦和手機(jī)辰晕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來确虱,“玉大人含友,你說我怎么就攤上這事⌒1纾” “怎么了窘问?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)宜咒。 經(jīng)常有香客問我惠赫,道長(zhǎng),這世上最難降的妖魔是什么故黑? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任儿咱,我火速辦了婚禮,結(jié)果婚禮上场晶,老公的妹妹穿的比我還像新娘混埠。我一直安慰自己,他們只是感情好诗轻,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布钳宪。 她就那樣靜靜地躺著,像睡著了一般扳炬。 火紅的嫁衣襯著肌膚如雪吏颖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天恨樟,我揣著相機(jī)與錄音半醉,去河邊找鬼。 笑死劝术,一個(gè)胖子當(dāng)著我的面吹牛奉呛,可吹牛的內(nèi)容都是我干的计螺。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼瞧壮,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了匙握?” 一聲冷哼從身側(cè)響起咆槽,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎圈纺,沒想到半個(gè)月后秦忿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛾娶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年灯谣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛔琅。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胎许,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出罗售,到底是詐尸還是另有隱情辜窑,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布寨躁,位于F島的核電站穆碎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏职恳。R本人自食惡果不足惜所禀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望放钦。 院中可真熱鬧色徘,春花似錦、人聲如沸最筒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽床蜘。三九已至辙培,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間邢锯,已是汗流浹背扬蕊。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丹擎,地道東北人尾抑。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓歇父,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親再愈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子榜苫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,510評(píng)論 25 707
  • afinalAfinal是一個(gè)android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,401評(píng)論 2 45
  • 對(duì)于老公的奶奶翎冲,一個(gè)農(nóng)村的老太太垂睬,八十多歲,眼睛看不清抗悍,牙都掉光啦驹饺,腿腳也不太好,但身子骨依舊健朗缴渊,能吃能喝...
    坐聽風(fēng)雨閱讀 424評(píng)論 0 1
  • 歲月滾滾向前衔沼,不停催促孩子長(zhǎng)大蝌借,大人老去,于是在感嘆歲月流逝之快時(shí)俐巴,往往會(huì)捎帶上一句:歲月不饒人骨望、歲月催人老、歲月...
    補(bǔ)拙莫如勤LV閱讀 1,199評(píng)論 0 2
  • 對(duì)面是來自七逕在昆明做生意的大叔欣舵。知道我是去旅游的擎鸠,大叔就熱心地給我講他在云南各地遇到的趣事,在與大叔的交流過程...
    易木海女閱讀 171評(píng)論 0 0