標籤:
心靜志遠 | 技術會被淘汰,但思想會一直永存(多思考,多總結,多分享)
無線開發一定少不了與服務端進行互動,這自然離不開使用類似於HttpClient的工具包來發送和接受HTTP請求。常用的有一些這些:
1. Apache 的 HttpClient(Android2.3之前使用)
2. Android 簡化擴充版 HttpUrlConnection
3. Google 推出的 Volley(在Android2.3之前使用HttpClient,之後使用HttpUrlConnection)
4. Git開源項目Okhttp (使用http+SPDY協議)
5. Android-async-http
6. Retrofit(預設使用Okhttp作為傳輸層)
7. Android Query
8. Android AsyncTask
HttpClient 與 HttpUrlConnection對比:
對於HttpClient 大家都比較熟悉,這裡就不做多餘闡述,為什麼使用HttpUrlConnection呢?主要原因是因為HttpClient雖然穩定,但是太龐大了,在Android上不易做升級和擴充,所以才有了輕量級的HttpUrlConnection。HttpUrlConnection相比與HttpClient做的擴充點可以參考下面的部落格。
參考:
http://blog.csdn.net/guolin_blog/article/details/12452307
http://android-developers.blogspot.com/2011/09/androids-http-clients.html
Volley中使用的也是HttpUrlConnection,那麼Volley在HttpUrlConnection上有沒有改進呢?還有待查閱相關資料。
Android內建的AsyncTask:不推薦使用。
弊端:
1. 不支援環境改變;
2. 不能取消網路請求;
3. 沒有簡單的方法來做並發API調用;
4. 每個時刻只能有一個AsyncTask任務可以運行;
5. ancle()方法並不會起作用;
6. Activity被銷毀,還保持Activity的引用時,可能導致記憶體泄露;
7. Activity reCreated時,可能導致AsyncTask的結果丟失;
8. 串列或並行的不確定性,依賴API Level的不同而不同;
AsyncTas陰暗的一面:http://bon-app-etit.blogspot.in/2013/04/the-dark-side-of-asynctask.html
OkHttp、Volley、Retrofit三者對比:
Volley的特點:
1. Volley的優勢在於處理小檔案的http請求;
2. 在Volley中也是可以使用Okhttp作為傳輸層;參考:https://plus.google.com/+JakeWharton/posts/eJJxhkTQ4yU
3. Volley在處理高解析度的映像壓縮上有很好的支援;
4.?NetworkImageView在GC的使用模式上更加保守,在請求清理上也更加積極,networkimageview僅僅依賴於強大的記憶體引用,併當一個新請求是來自ImageView或ImageView離開螢幕時 會清理掉所有的請求資料。
5. Volley比Retrofit在記憶體錯誤處理上要更好。
Retrofit的特點:
1. 使用REST API時非常方便;
2. 傳輸層預設就使用OkHttp;
3. 支援NIO;
4. 擁有出色的API文檔和社區支援
5. 速度上比volley更快;
OkHttp的特點:
支援SPDY(要求標頭壓縮、並行請求、強制SSL、服務端推送);
三者的效能基準:
其中Volley與Retrofit的對比,參考:http://instructure.github.io/blog/2013/12/09/volley-vs-retrofit/
三者對比參考:http://stackoverflow.com/questions/16902716/comparison-of-android-networking-libraries-okhttp-retrofit-volley
android 開發 常用到的一些網路通訊包