久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

2016 Top 10 Android Library

 白色楓車JAYCN 2017-01-19

2016 Top 10 Android Library

版權(quán)聲明:本文為 stormzhang 原創(chuàng)文章,,可以隨意轉(zhuǎn)載,但必須在明確位置注明出處?。,。?/strong>

過(guò)去的 2016 年,,開(kāi)源社區(qū)異?;钴S,很多個(gè)人與公司爭(zhēng)相開(kāi)源自己的項(xiàng)目,,讓人眼花繚亂,,然而有些項(xiàng)目只是曇花一現(xiàn),有些項(xiàng)目卻持久創(chuàng)造價(jià)值,為開(kāi)發(fā)者提供了極大的便利,,這些終究由時(shí)間來(lái)判斷,。今天,我就來(lái)整理一篇,,我個(gè)人認(rèn)為的 2016 年對(duì) Android 開(kāi)發(fā)有巨大幫助的,,甚至改變了 Android 開(kāi)發(fā)方式的開(kāi)源庫(kù),但是,,僅限個(gè)人認(rèn)為,,不具有任何權(quán)威性。

1. RxJava

地址:https://github.com/ReactiveX/RxJava

2016 年 Android 界最火的莫過(guò)于 RxJava 了,,如果你還不知道 RxJava,,你所在公司,或者你所在的項(xiàng)目還沒(méi)有使用 RxJava,,那真的是有點(diǎn) out 了,,RxJava 不僅大大簡(jiǎn)化了代碼,甚至可以說(shuō)改變了我們的開(kāi)發(fā)方式,。

RxJava 是一種函數(shù)式,、響應(yīng)式的異步操作庫(kù),它讓你的代碼更加簡(jiǎn)潔,,真正的讓你的代碼寫到爽,!由于 RxJava 用過(guò)的都說(shuō)好,基于此,,GitHub 上衍生了一堆比如 RxAndroid,、RxBus、RxPermission 等之類的開(kāi)源庫(kù),,足以說(shuō)明它的影響力,。

關(guān)于 RxJava 的文章網(wǎng)上一大堆,它的使用方法與好處我就不多說(shuō)了,,請(qǐng)自行去搜索了解,總之,,身為 Android 開(kāi)發(fā)者,,到現(xiàn)在你還不知道 RxJava,簡(jiǎn)直了,!

2. Retrofit

地址:https://github.com/square/retrofit

如果有人問(wèn)我,,Android 界最好用的網(wǎng)絡(luò)請(qǐng)求庫(kù)是什么?在之前可能會(huì)有人回答 android-async-http,、Volley,、OkHttp(準(zhǔn)確說(shuō),OkHttp 是一個(gè) http 請(qǐng)求客戶端) 之類的,但是 16 年過(guò)后,,我會(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ò)展性非常好,,支持各種配置來(lái)滿足你的需求,,最最重要的是,如果你的項(xiàng)目使用了 RxJava,,那么 Retrofit 可以完美結(jié)合,,我只能說(shuō) Prefect!再次驗(yàn)證了那句話:Square 出品,,必屬精品,!

3. EventBus

地址:https://github.com/greenrobot/EventBus

試想這么一個(gè)場(chǎng)景,在 A 頁(yè)面打開(kāi) B 頁(yè)面,,然后 B 頁(yè)面打開(kāi)了 C 頁(yè)面,,C 頁(yè)面又打開(kāi)了 D 頁(yè)面,而且還需要傳遞參數(shù),,在 D 頁(yè)面修改了一些信息,,然后這些信息更新之后,A,、B,、C 頁(yè)面很可能都需要對(duì)應(yīng)的進(jìn)行數(shù)據(jù)更新,碰到這種需求該怎么處理,?

有人說(shuō)用 startActivityForResult(),,你可以試下,有多么難處理,,還有人想到用廣播,,這個(gè)當(dāng)然可以,因?yàn)閺V播是全局的,,主要進(jìn)行注冊(cè)都可以通知到每一個(gè)頁(yè)面,,但是我很不喜歡用廣播,每次用廣播都要走那一套流程,,很麻煩,,而且很重。

而如果你知道 Eventbus,,那么一切都非常的簡(jiǎn)單,。

EventBus 是一個(gè)事件管理平臺(tái),以事件驅(qū)動(dòng)的方式來(lái)簡(jiǎn)化事件傳遞邏輯,可以把它想象成輕量級(jí)的 BroadcastReceiver,,不過(guò),,EventBus 并不是 16 年才開(kāi)始進(jìn)入大眾視野的,很早就開(kāi)源了,,只是這個(gè)庫(kù)太實(shí)用了,,時(shí)至今日,它仍然很火,,使用起來(lái)非常方便,。

值得注意的是:EventBus 固然好用,但是不要過(guò)度使用,,因?yàn)橐坏┠愕拇a大量使用 EventBus,,會(huì)致使代碼可讀性稍差,而且出了問(wèn)題不太好定位,。所以建議只在特定的場(chǎng)景使用,,切莫貪杯!

4. Glide,、Fresco

圖片加載可能跟網(wǎng)絡(luò)請(qǐng)求一樣,,基本是所有 App 開(kāi)發(fā)必備的功能,選擇一款成熟穩(wěn)定的圖片加載庫(kù)重要性不言而喻,,目前主流的圖片加載有 Picasso,、Glide、Fresco,,Glide 是 Google 員工基于 Picasso 基礎(chǔ)上進(jìn)行開(kāi)發(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

開(kāi)發(fā)者最關(guān)心的除了完成功能外,其次就是會(huì)不會(huì)造成內(nèi)存泄露了,其實(shí)檢測(cè)內(nèi)存泄露在 Java 領(lǐng)域有很多種方法與工具,,但是針對(duì) Android 都不夠方便,,而良心公司 Square 開(kāi)源了一款針對(duì) Android 平臺(tái)的內(nèi)存泄露檢測(cè)工具 LeakCanary,集成簡(jiǎn)單,,使用方便,,平時(shí)測(cè)試的過(guò)程中就自動(dòng)記錄了內(nèi)存泄露的位置,甚至幫你定位到代碼級(jí)別,,強(qiáng)烈推薦,。

6. ButterKnife

地址:https://github.com/JakeWharton/butterknife

我想應(yīng)該沒(méi)有人沒(méi)聽(tīng)過(guò)這個(gè)庫(kù)了吧?ButterKnife 是 Android 之神 JakeWharton 的大作,,已經(jīng)開(kāi)源了很長(zhǎng)時(shí)間,,然而在 2016 年它的使用熱度依然不減,它可以讓你避免無(wú)休止的 findViewById() 代碼,,具體用法我就不多說(shuō)了,,使用起來(lái)比較簡(jiǎn)單。

7. Realm

地址:https:///

說(shuō)到 Realm 不得不提到一個(gè) ORM 的概念,。何為 ORM 呢,?ORM 是 Object Relation Mapping 的縮寫,翻譯過(guò)來(lái)就是對(duì)象關(guān)系映射,。這是相對(duì)于數(shù)據(jù)庫(kù)的,,我們知道 Android 中使用的數(shù)據(jù)庫(kù)是 SQLite,而且 Android SDK 自帶操作數(shù)據(jù)庫(kù)的接口,,而實(shí)際我們?cè)谑褂玫倪^(guò)程往往需要把查詢的數(shù)據(jù)轉(zhuǎn)換到一個(gè) 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;}

操作起來(lái)是不是很麻煩,?而且可讀性超差,,而有了 ORM 我們寫代碼可能會(huì)是類似這樣:

查詢數(shù)據(jù)是這樣:

public User getUserById(int id) { return RealmResultsUser> pups = realm.where(User.class) .lessThan('id', 2) .findAll();}

是不是非常方便?代碼寫起來(lái)更像是面向?qū)ο?,而不是一個(gè)個(gè)的裸寫 SQL 了,,這就是所謂的 ORM。

而 Android 界的 ORM 框架有很多,,比如 GreeDao,、SugarORM、ActiveAndroid 等等,,但是我推薦大家的 ORM 框架以上都不是,,是叫做 Realm。

Realm 是一種面向移動(dòng)端的新型輕量數(shù)據(jù)庫(kù),,而且是開(kāi)源的,,跟 SQLite 完全不一樣,,性能上秒殺 SQLite,支持 Java,、Android,、iOS 各平臺(tái),我們?cè)趯?shí)際項(xiàng)目中采用過(guò),,體驗(yàn)下來(lái)各方面都很不錯(cuò),,所以推薦大家嘗試下 Realm。

8. Dagger 2

地址:https://github.com/google/dagger

依賴注入的概念估計(jì)大家都聽(tīng)過(guò),,不理解的不妨搜索了解下,,Android 領(lǐng)域比較著名的依賴注入庫(kù)莫過(guò)于 Dagger 了,基于注解,,使用起來(lái)異常方便,。

Dagger 起初是 Square 開(kāi)源的,后來(lái) Google 在此技術(shù)上進(jìn)行了改進(jìn)與優(yōu)化,,去除了反射,,編譯時(shí)進(jìn)行依賴注入,性能上有大幅提升,,取名 Dagger 2,,Square 之前開(kāi)源的 Dagger 已不建議使用。其實(shí)之前大家對(duì) Dagger 的關(guān)注程度沒(méi)有那么高,,一般都是屬于中,、高級(jí)工程師才會(huì)關(guān)注使用,但是 16 年 Android 的架構(gòu)被提上日程,,各種 MVP,、MVVM、Clean 架構(gòu)等討論的較多,,而 Dagger 作為承載這些架構(gòu)重要的一環(huán)被越來(lái)越多的開(kāi)發(fā)者使用,,所以 16 年我們看到 Dagger 的身影越來(lái)越多,所以,,Dagger 被我列為 16 年還算是比較火,,比較實(shí)用的 Top 10 Android Library。

9. android-architecture

地址:https://github.com/googlesamples/android-architecture

上面說(shuō)了,,16 年 Android 架構(gòu)被越來(lái)越多的開(kāi)發(fā)者關(guān)注,,國(guó)內(nèi)外關(guān)于架構(gòu)的探討比較活躍,大家熟知的 MVC,、MVP,、MVVM、Clean 等,,就在大家爭(zhēng)執(zhí)哪個(gè)更好,,Android 開(kāi)發(fā)到底該怎樣架構(gòu)的時(shí)候,,Google 開(kāi)源了一個(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 開(kāi)發(fā)中除了我們以上用到的各種實(shí)用庫(kù)之外,我們往往還會(huì)涉及到各種 UI 效果的實(shí)現(xiàn),,對(duì)于移動(dòng)開(kāi)發(fā),,界面開(kāi)發(fā)其中是很重要的一環(huán),而 16 年針對(duì) Android 開(kāi)發(fā)有人開(kāi)源整理了這么一個(gè)庫(kù),,里面網(wǎng)羅了所有你見(jiàn)過(guò)的,、沒(méi)見(jiàn)過(guò)的各種 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 開(kāi)發(fā)中,比較實(shí)用的,、對(duì)你的開(kāi)發(fā)有很大幫助的一些 Android Library,,除了對(duì)你們的開(kāi)發(fā)效率有提升之外,還能夠了解其原理,,閱讀其優(yōu)秀源碼,,參考其代碼設(shè)計(jì),,是絕佳的一份學(xué)習(xí)資料,希望每個(gè)人在 2017 年都能在技術(shù)上取得很大進(jìn)步,!

推薦關(guān)注我的微信公眾號(hào) AndroidDeveloper「googdev」,,第一時(shí)間獲取博客更新!


stormzhang

01/16/2017



上一篇:小程序發(fā)布,,你很方,?


社交賬號(hào)登錄:


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多