android 開發 常用到的一些網絡通信包

無線開發一定少不了與服務端進行交互,這自然離不開使用類似於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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章