無線開發必定少不了與服務端進行交互,這天然離不開使用相似於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 AsyncTaskhtml
對於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.htmlandroid
Volley中使用的也是HttpUrlConnection,那麼Volley在HttpUrlConnection上有沒有改進呢?還有待查閱相關資料。git
弊端:
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.htmlgithub
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併發