1. 緩存
DiskLruCacheJava實現基于LRU的磁盤緩存,
在
防止多圖OOM的時候用得上。
2.圖片加載
Android Universal Image Loader一個強大的加載,緩存,展示圖片的庫
Picasso一個強大的圖片下載與緩存的庫
Fresco一個用于管理圖像和他們使用的內存的庫
Glide一個圖片加載和緩存的庫
3. 圖片處理
Picasso-transformations一個為Picasso提供多種圖片變換的庫
Glide-transformations一個為Glide提供多種圖片變換的庫
Android-gpuimage基于OpenGL的Android過濾器
4. 網絡請求
Android Async HTTPAndroid異步HTTP庫
AndroidAsync異步Socket,HTTP(客戶端+服務器),WebSocket,和socket.io庫。基于NIO而不是線程。
OkHttp一個Http與Http/2的客戶端,比其他的強大,使用方式也稍顯復雜
Retrofit類型安全的Http客戶端
VolleyGoogle推出的Android異步網絡請求框架和圖片加載框架。2013年Google I/O大會上推出了一個新的網絡通信框架——Volley。Volley可是說是把AsyncHttpClient和Universal-Image-Loader的優點集于了一身,既可以像AsyncHttpClient一樣非常簡單地進行HTTP通信,也可以像Universal-Image-Loader一樣輕松加載網絡上的圖片。除了簡單易用之外,Volley在性能方面也進行了大幅度的調整,它的設計目標就是非常適合去進行數據量不大,但通信頻繁的網絡操作,而對于大數據量的網絡操作,比如說下載文件等,Volley的表現就會非常糟糕。
5. 網絡解析
Gson一個Java序列化/反序列化庫,可以將JSON和java對象互相轉換。相對于較為傳統的Json解析來說,google共享的開源Gson在解析速度和所使用的內存在有著明顯的優勢,雖然說阿里巴巴也提供了fastgson包,但是它跟Gson的處理速度大同小異,只是底層實現的原理不同。核心函數是:
[java]view plaincopy
publicstaticString?createJsonString(Object?value)
{
Gson?gson?=newGson();
String?str?=?gson.toJson(value);
returnstr;
}
JacksonJackson可以輕松地將Java對象轉換成json對象和xml文檔,同樣也可以將json、xml轉換成Java對象。
Stream API方式是開銷最低、效率最高,但編寫代碼復雜度也最高,在生成Json時,需要逐步編寫符號和字段拼接json,在解析Json時,需要根據token指向也查找json值,生成和解析json都不是很方便,代碼可讀性也很低。
Databinding處理Json是最常用的json處理方式,生成json時,創建相關的java對象,并根據json內容結構把java對象組裝起來,最后調用writeValue方法即可生成json,
解析時,就更簡單了,直接把json映射到相關的java對象,然后就可以遍歷java對象來獲取值了。
FastjsonJava上一個快速的JSON解析器/生成器。阿里巴巴FastJson是一個Json處理工具包,包括“序列化”和“反序列化”兩部分,它具備如下特征:
速度最快,測試表明,fastjson具有極快的性能,超越任其他的Java Json parser。包括自稱最快的JackJson;
功能強大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;無依賴,能夠直接運行在Java SE 5.0以上版本;支持Android;開源 (Apache 2.0)
[java]view plaincopy
t?=?JSON.parseObject(jsonString,?cls);
list?=?JSON.parseArray(jsonString,?cls);
HtmlPaser一種用來解析單個獨立html或嵌套html的方式。對于樹型結構進行遍歷的函數,這些函數最容易理解:
NodegetParent():取得父節點
NodeListgetChildren():取得子節點的列表
NodegetFirstChild():取得第一個子節點
NodegetLastChild():取得最后一個子節點
NodegetPreviousSibling():取得前一個兄弟(不好意思,英文是兄弟姐妹,直譯太麻煩而且不符合習慣,對不起女同胞了)
NodegetNextSibling():取得下一個兄弟節點
取得Node內容的函數:
StringgetText():取得文本
StringtoPlainTextString():取得純文本信息。
StringtoHtml():取得HTML信息(原始HTML)
StringtoHtml(boolean verbatim):取得HTML信息(原始HTML)
StringtoString():取得字符串信息(原始HTML)
PagegetPage():取得這個Node對應的Page對象
intgetStartPosition():取得這個Node在HTML頁面中的起始位置
intgetEndPosition():取得這個Node在HTML頁面中的結束位置
用于Filter過濾的函數:
voidcollectInto(NodeList list, NodeFilter filter):基于filter的條件對于這個節點進行過濾,符合條件的節點放到list中。
用于Visitor遍歷的函數:
voidaccept(NodeVisitor visitor):對這個Node應用visitor
Jsoup一個以最好的DOM,CSS和jQuery解析html的庫。通過class="article_item"獲取到所有的元素,也就是Element,然后遍歷所有的元素,把每個元素我們需要的值取出來。我們可以定義一個實體類,
6. 數據庫
對象-關系映射(OBJECT/RELATION MAPPING,簡稱ORM),是隨著面向對象的軟件開發方法發展而產生的。面向對象的開發方法是當今企業級應用開發環境中的主流開發方法,關系數據庫是企業級應用環境中永久存放數據的主流數據存儲系統。對象和關系數據是業務實體的兩種表現形式,業務實體在內存中表現為對象,在數據庫中表現為關系數據。內存中的對象之間存在關聯和繼承關系,而在數據庫中,關系數據無法直接表達多對多關聯和繼承關系。因此,對象-關系映射(ORM)系統一般以中間件的形式存在,主要實現程序對象到關系數據庫數據的映射。
OrmLiteJDBC和Android的輕量級ORM (對象關系映射)java包。提高我們的開發效率
Sugar用超級簡單的方法處理Android數據庫。SugarORM 是 Android 平臺專用ORM,感覺還是這個好用
一個簡單,簡潔,干凈的一體化進程以最小的配置。
通過反射自動命名表和列。
支持不同模式版本之間遷移。
GreenDAO一種輕快地將對象映射到SQLite數據庫的ORM解決方案。當性能很重要時(數據訪問頻繁),GreenDao是一個很快的解決方案,它能夠支持數千條記錄的CRUD每秒,和OrmLite相比,GreenDAO要快幾乎4.5倍。感覺平時沒必要。
ActiveAndroid以活動記錄方式為Android SQLite提供持久化
SQLBriteSQLiteOpenHelper 和ContentResolver的輕量級包裝。感覺不太好用。
Realm移動數據庫:一個SQLite和ORM的替換品。安卓開發的最新趨勢,支持JSON,流式api,數據變更通知,以及加密支持,這些都為安卓開發者帶來了方便。
7. 依賴注入
ButterKnife將Android視圖和回調方法綁定到字段和方法上。也就是 findViewById(),一直以來的做法都是一個個定義,然后在 setContentView() 或 inflate() 之后一一來findViewById()進行實例化,而使用 ButterKnife,你只需要在代碼中 使用注解方式進行對象申明,然后在 setContentView() 或 inflate() 之后調用一句話,那么申明的所有對象自動創建出來。OnClickListener監聽什么的。
Dagger2一個Android和java快速依賴注射器。目前Dagger 2 確實是最容易使用和調試,同時還具有最佳性能的框架了。不太明白。
AndroidAnotations快速安卓開發。易于維護。使代碼更加精簡,使項目更加容易維護
RoboGuiceAndroid平臺的Google Guice。Dependency Injection( 依賴注入)可以很好的幫助我們分離模塊,降低耦合、提高可測試性。(PS:Roboguice 只是一個工具,依賴注入更多的是一種思想)
8. 圖表
WilliamChart創建圖表的Android庫。WilliamChart是基于Views的Android圖表類庫,幫助開發者在Android應用中實現折線圖、柱狀圖和堆疊柱狀圖。數值發生變化時圖表也會以動畫的效果發生變化。
HelloCharts兼容到API8的Android圖表庫
MPAndroidChart一個強大的Android圖表視圖/圖形庫。一個可以拖動縮放的圖表庫,包含曲線圖、直方圖、餅狀圖,其中直方圖支持3d效果。
9. 后臺處理
Tape一個輕快的,事務性的,基于文件的FIFO的庫
Android Priority Job Queue一個專門為Android輕松調度任務的工作隊列。執行定時任務什么的很方便。
10. 事件總線
EventBus安卓優化的事件總線,簡化了活動、片段、線程、服務等的通信
Otto一個基于Guava的增強的事件總線,
Android程序開發的過程中想要不同的組件之間進行有效的通信可以使用這個庫。通過otto庫可以
降低程序之間的耦合性。這個以后一定要用一下。
11. 響應式編程(好像新的語言一樣)
RxJavaJVM上的響應式擴展
RxJavaJoins為RxJava提供Joins操作
RxAndroidAndroid上的響應式擴展,在RxJava基礎上添加了Android線程調度
RxBinding提供用RxJava綁定Android UI的API
AgeraAndroid上的響應式編程
12. Log框架
Logger簡單,漂亮,強大的Android日志工具
Hugo在調試版本上注解的觸發方法進行日志記錄
Timber一個小的,可擴展的日志工具
13. 測試框架
MockitoJava編寫的Mocking單元測試框架,通過它很容易地測試項目中很少出現的邊緣情況(會話超時、服務器維護、特殊值),確保我們的應用正常運行。
RobotiumAndroid UI 測試
RobolectricAndroid單元測試框架
Android自帶很多測試工具:JUnit,Monkeyrunner,UiAutomator,Espresso等
14. 調試框架
Stetho調試Android應用的橋梁,使得可以利用Chrome開發者工具進行調試,很高端 = =;感覺暫時用不上。
15. 性能優化
LeakCanary內存泄漏檢測工具
ACRAAndroid應用程序崩潰報告