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)用程序崩潰報告