Android 通用流行框架梳理(轉(zhuǎn))

1. 緩存

DiskLruCacheJava實(shí)現(xiàn)基于LRU的磁盤緩存罢杉,

防止多圖OOM的時候用得上狞尔。

2.圖片加載

Android Universal Image Loader一個強(qiáng)大的加載臼隔,緩存遂唧,展示圖片的庫

Picasso一個強(qiáng)大的圖片下載與緩存的庫

Fresco一個用于管理圖像和他們使用的內(nèi)存的庫

Glide一個圖片加載和緩存的庫

3. 圖片處理

Picasso-transformations一個為Picasso提供多種圖片變換的庫

Glide-transformations一個為Glide提供多種圖片變換的庫

Android-gpuimage基于OpenGL的Android過濾器

4. 網(wǎng)絡(luò)請求

Android Async HTTPAndroid異步HTTP庫

AndroidAsync異步Socket如输,HTTP(客戶端+服務(wù)器)有鹿,WebSocket旭旭,和socket.io庫〈邪希基于NIO而不是線程持寄。

OkHttp一個Http與Http/2的客戶端,比其他的強(qiáng)大娱俺,使用方式也稍顯復(fù)雜

Retrofit類型安全的Http客戶端

VolleyGoogle推出的Android異步網(wǎng)絡(luò)請求框架和圖片加載框架稍味。2013年Google I/O大會上推出了一個新的網(wǎng)絡(luò)通信框架——Volley。Volley可是說是把AsyncHttpClient和Universal-Image-Loader的優(yōu)點(diǎn)集于了一身荠卷,既可以像AsyncHttpClient一樣非常簡單地進(jìn)行HTTP通信模庐,也可以像Universal-Image-Loader一樣輕松加載網(wǎng)絡(luò)上的圖片。除了簡單易用之外油宜,Volley在性能方面也進(jìn)行了大幅度的調(diào)整掂碱,它的設(shè)計目標(biāo)就是非常適合去進(jìn)行數(shù)據(jù)量不大,但通信頻繁的網(wǎng)絡(luò)操作慎冤,而對于大數(shù)據(jù)量的網(wǎng)絡(luò)操作疼燥,比如說下載文件等,Volley的表現(xiàn)就會非常糟糕蚁堤。

5. 網(wǎng)絡(luò)解析

Gson一個Java序列化/反序列化庫醉者,可以將JSON和java對象互相轉(zhuǎn)換。相對于較為傳統(tǒng)的Json解析來說,google共享的開源Gson在解析速度和所使用的內(nèi)存在有著明顯的優(yōu)勢撬即,雖然說阿里巴巴也提供了fastgson包立磁,但是它跟Gson的處理速度大同小異,只是底層實(shí)現(xiàn)的原理不同搞莺。核心函數(shù)是:

[java]view plaincopy

publicstaticString?createJsonString(Object?value)

{

Gson?gson?=newGson();

String?str?=?gson.toJson(value);

returnstr;

}

JacksonJackson可以輕松地將Java對象轉(zhuǎn)換成json對象和xml文檔息罗,同樣也可以將json、xml轉(zhuǎn)換成Java對象才沧。

Stream API方式是開銷最低迈喉、效率最高,但編寫代碼復(fù)雜度也最高温圆,在生成Json時挨摸,需要逐步編寫符號和字段拼接json,在解析Json時,需要根據(jù)token指向也查找json值岁歉,生成和解析json都不是很方便得运,代碼可讀性也很低。

Databinding處理Json是最常用的json處理方式锅移,生成json時熔掺,創(chuàng)建相關(guān)的java對象,并根據(jù)json內(nèi)容結(jié)構(gòu)把java對象組裝起來非剃,最后調(diào)用writeValue方法即可生成json,

解析時置逻,就更簡單了,直接把json映射到相關(guān)的java對象备绽,然后就可以遍歷java對象來獲取值了券坞。

FastjsonJava上一個快速的JSON解析器/生成器。阿里巴巴FastJson是一個Json處理工具包肺素,包括“序列化”和“反序列化”兩部分恨锚,它具備如下特征:

速度最快,測試表明倍靡,fastjson具有極快的性能猴伶,超越任其他的Java Json parser。包括自稱最快的JackJson塌西;

功能強(qiáng)大他挎,完全支持Java Bean、集合雨让、Map、日期忿等、Enum栖忠,支持范型,支持自省庵寞;無依賴狸相,能夠直接運(yùn)行在Java SE 5.0以上版本;支持Android捐川;開源 (Apache 2.0)

[java]view plaincopy

t?=?JSON.parseObject(jsonString,?cls);

list?=?JSON.parseArray(jsonString,?cls);

HtmlPaser一種用來解析單個獨(dú)立html或嵌套html的方式脓鹃。對于樹型結(jié)構(gòu)進(jìn)行遍歷的函數(shù),這些函數(shù)最容易理解:

NodegetParent():取得父節(jié)點(diǎn)

NodeListgetChildren():取得子節(jié)點(diǎn)的列表

NodegetFirstChild():取得第一個子節(jié)點(diǎn)

NodegetLastChild():取得最后一個子節(jié)點(diǎn)

NodegetPreviousSibling():取得前一個兄弟(不好意思古沥,英文是兄弟姐妹瘸右,直譯太麻煩而且不符合習(xí)慣,對不起女同胞了)

NodegetNextSibling():取得下一個兄弟節(jié)點(diǎn)

取得Node內(nèi)容的函數(shù):

StringgetText():取得文本

StringtoPlainTextString():取得純文本信息岩齿。

StringtoHtml():取得HTML信息(原始HTML)

StringtoHtml(boolean verbatim):取得HTML信息(原始HTML)

StringtoString():取得字符串信息(原始HTML)

PagegetPage():取得這個Node對應(yīng)的Page對象

intgetStartPosition():取得這個Node在HTML頁面中的起始位置

intgetEndPosition():取得這個Node在HTML頁面中的結(jié)束位置

用于Filter過濾的函數(shù):

voidcollectInto(NodeList list, NodeFilter filter):基于filter的條件對于這個節(jié)點(diǎn)進(jìn)行過濾太颤,符合條件的節(jié)點(diǎn)放到list中。

用于Visitor遍歷的函數(shù):

voidaccept(NodeVisitor visitor):對這個Node應(yīng)用visitor

Jsoup一個以最好的DOM盹沈,CSS和jQuery解析html的庫龄章。通過class="article_item"獲取到所有的元素,也就是Element乞封,然后遍歷所有的元素做裙,把每個元素我們需要的值取出來。我們可以定義一個實(shí)體類肃晚,

6. 數(shù)據(jù)庫

對象-關(guān)系映射(OBJECT/RELATION MAPPING锚贱,簡稱ORM),是隨著面向?qū)ο蟮能浖_發(fā)方法發(fā)展而產(chǎn)生的陷揪。面向?qū)ο蟮拈_發(fā)方法是當(dāng)今企業(yè)級應(yīng)用開發(fā)環(huán)境中的主流開發(fā)方法惋鸥,關(guān)系數(shù)據(jù)庫是企業(yè)級應(yīng)用環(huán)境中永久存放數(shù)據(jù)的主流數(shù)據(jù)存儲系統(tǒng)。對象和關(guān)系數(shù)據(jù)是業(yè)務(wù)實(shí)體的兩種表現(xiàn)形式悍缠,業(yè)務(wù)實(shí)體在內(nèi)存中表現(xiàn)為對象卦绣,在數(shù)據(jù)庫中表現(xiàn)為關(guān)系數(shù)據(jù)。內(nèi)存中的對象之間存在關(guān)聯(lián)和繼承關(guān)系飞蚓,而在數(shù)據(jù)庫中滤港,關(guān)系數(shù)據(jù)無法直接表達(dá)多對多關(guān)聯(lián)和繼承關(guān)系。因此趴拧,對象-關(guān)系映射(ORM)系統(tǒng)一般以中間件的形式存在溅漾,主要實(shí)現(xiàn)程序?qū)ο蟮疥P(guān)系數(shù)據(jù)庫數(shù)據(jù)的映射。

OrmLiteJDBC和Android的輕量級ORM (對象關(guān)系映射)java包著榴。提高我們的開發(fā)效率

Sugar用超級簡單的方法處理Android數(shù)據(jù)庫添履。SugarORM 是 Android 平臺專用ORM,感覺還是這個好用

一個簡單脑又,簡潔暮胧,干凈的一體化進(jìn)程以最小的配置锐借。

通過反射自動命名表和列。

支持不同模式版本之間遷移往衷。

GreenDAO一種輕快地將對象映射到SQLite數(shù)據(jù)庫的ORM解決方案钞翔。當(dāng)性能很重要時(數(shù)據(jù)訪問頻繁),GreenDao是一個很快的解決方案席舍,它能夠支持?jǐn)?shù)千條記錄的CRUD每秒布轿,和OrmLite相比,GreenDAO要快幾乎4.5倍来颤。感覺平時沒必要汰扭。

ActiveAndroid以活動記錄方式為Android SQLite提供持久化

SQLBriteSQLiteOpenHelper 和ContentResolver的輕量級包裝。感覺不太好用脚曾。

Realm移動數(shù)據(jù)庫:一個SQLite和ORM的替換品东且。安卓開發(fā)的最新趨勢,支持JSON本讥,流式api珊泳,數(shù)據(jù)變更通知,以及加密支持拷沸,這些都為安卓開發(fā)者帶來了方便色查。

7. 依賴注入

ButterKnife將Android視圖和回調(diào)方法綁定到字段和方法上。也就是 findViewById()撞芍,一直以來的做法都是一個個定義秧了,然后在 setContentView() 或 inflate() 之后一一來findViewById()進(jìn)行實(shí)例化,而使用 ButterKnife序无,你只需要在代碼中 使用注解方式進(jìn)行對象申明验毡,然后在 setContentView() 或 inflate() 之后調(diào)用一句話,那么申明的所有對象自動創(chuàng)建出來帝嗡。OnClickListener監(jiān)聽什么的晶通。

Dagger2一個Android和java快速依賴注射器。目前Dagger 2 確實(shí)是最容易使用和調(diào)試哟玷,同時還具有最佳性能的框架了狮辽。不太明白。

AndroidAnotations快速安卓開發(fā)巢寡。易于維護(hù)喉脖。使代碼更加精簡,使項(xiàng)目更加容易維護(hù)

RoboGuiceAndroid平臺的Google Guice抑月。Dependency Injection( 依賴注入)可以很好的幫助我們分離模塊树叽,降低耦合、提高可測試性谦絮。(PS:Roboguice 只是一個工具题诵,依賴注入更多的是一種思想)

8. 圖表

WilliamChart創(chuàng)建圖表的Android庫须误。WilliamChart是基于Views的Android圖表類庫,幫助開發(fā)者在Android應(yīng)用中實(shí)現(xiàn)折線圖仇轻、柱狀圖和堆疊柱狀圖。數(shù)值發(fā)生變化時圖表也會以動畫的效果發(fā)生變化奶甘。

HelloCharts兼容到API8的Android圖表庫

MPAndroidChart一個強(qiáng)大的Android圖表視圖/圖形庫篷店。一個可以拖動縮放的圖表庫,包含曲線圖臭家、直方圖疲陕、餅狀圖,其中直方圖支持3d效果钉赁。

9. 后臺處理

Tape一個輕快的蹄殃,事務(wù)性的,基于文件的FIFO的庫

Android Priority Job Queue一個專門為Android輕松調(diào)度任務(wù)的工作隊(duì)列你踩。執(zhí)行定時任務(wù)什么的很方便诅岩。

10. 事件總線

EventBus安卓優(yōu)化的事件總線,簡化了活動带膜、片段吩谦、線程、服務(wù)等的通信

Otto一個基于Guava的增強(qiáng)的事件總線膝藕,

Android程序開發(fā)的過程中想要不同的組件之間進(jìn)行有效的通信可以使用這個庫式廷。通過otto庫可以

降低程序之間的耦合性。這個以后一定要用一下芭挽。

11. 響應(yīng)式編程(好像新的語言一樣)

RxJavaJVM上的響應(yīng)式擴(kuò)展

RxJavaJoins為RxJava提供Joins操作

RxAndroidAndroid上的響應(yīng)式擴(kuò)展滑废,在RxJava基礎(chǔ)上添加了Android線程調(diào)度

RxBinding提供用RxJava綁定Android UI的API

AgeraAndroid上的響應(yīng)式編程

12. Log框架

Logger簡單,漂亮袜爪,強(qiáng)大的Android日志工具

Hugo在調(diào)試版本上注解的觸發(fā)方法進(jìn)行日志記錄

Timber一個小的蠕趁,可擴(kuò)展的日志工具

13. 測試框架

MockitoJava編寫的Mocking單元測試框架,通過它很容易地測試項(xiàng)目中很少出現(xiàn)的邊緣情況(會話超時饿敲、服務(wù)器維護(hù)妻导、特殊值),確保我們的應(yīng)用正常運(yùn)行怀各。

RobotiumAndroid UI 測試

RobolectricAndroid單元測試框架

Android自帶很多測試工具:JUnit倔韭,Monkeyrunner,UiAutomator瓢对,Espresso等

14. 調(diào)試框架

Stetho調(diào)試Android應(yīng)用的橋梁寿酌,使得可以利用Chrome開發(fā)者工具進(jìn)行調(diào)試,很高端 = =硕蛹;感覺暫時用不上醇疼。

15. 性能優(yōu)化

LeakCanary內(nèi)存泄漏檢測工具

ACRAAndroid應(yīng)用程序崩潰報告

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末硕并,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子秧荆,更是在濱河造成了極大的恐慌倔毙,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乙濒,死亡現(xiàn)場離奇詭異陕赃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)颁股,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進(jìn)店門么库,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人甘有,你說我怎么就攤上這事诉儒。” “怎么了亏掀?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵忱反,是天一觀的道長。 經(jīng)常有香客問我滤愕,道長缭受,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任该互,我火速辦了婚禮米者,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宇智。我一直安慰自己蔓搞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布随橘。 她就那樣靜靜地躺著喂分,像睡著了一般。 火紅的嫁衣襯著肌膚如雪机蔗。 梳的紋絲不亂的頭發(fā)上蒲祈,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天,我揣著相機(jī)與錄音萝嘁,去河邊找鬼梆掸。 笑死,一個胖子當(dāng)著我的面吹牛牙言,可吹牛的內(nèi)容都是我干的酸钦。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼咱枉,長吁一口氣:“原來是場噩夢啊……” “哼卑硫!你這毒婦竟也來了徒恋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤欢伏,失蹤者是張志新(化名)和其女友劉穎入挣,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體硝拧,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡财岔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了河爹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡桐款,死狀恐怖咸这,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情魔眨,我是刑警寧澤媳维,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布,位于F島的核電站遏暴,受9級特大地震影響侄刽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜朋凉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一州丹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧杂彭,春花似錦墓毒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至团秽,卻和暖如春主胧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背习勤。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工踪栋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留藻雌,地道東北人等脂。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓茫死,卻偏偏與公主長得像蔫慧,于是被迫代替她去往敵國和親淑仆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評論 2 349

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