AsyncHttpClient,它把HTTP全部的通訊細節所有封裝在了內部,咱們只須要簡單調用幾行代碼就能夠完成通訊操做了。android
Universal-Image-Loader,它使得在界面上顯示網絡圖片的操做變得極度簡單,開發者不用關心如何從網絡上獲取圖片,也不用關心開啓線程、回收圖片資源等細節,Universal-Image-Loader已經把一切都作好了。算法
Volley但是說是把AsyncHttpClient和Universal-Image-Loader的優勢集於了一身,既能夠像AsyncHttpClient同樣很是簡單地進行HTTP通訊,也能夠像Universal-Image-Loader同樣輕鬆加載網絡上的圖片。除了簡單易用以外,Volley在性能方面也進行了大幅度的調整,它的設計目標就是很是適合去進行數據量不大,但通訊頻繁的網絡操做,而對於大數據量的網絡操做,好比說下載文件等,Volley的表現就會很是糟糕。數組
RequestQueue mQueue = Volley.newRequestQueue(context);緩存
RequestQueue是一個請求隊列對象,它能夠緩存全部的HTTP請求,而後按照必定的算法併發地發出這些請求。RequestQueue內部的設計就是很是合適高併發的,所以咱們沒必要爲每一次HTTP請求都建立一個RequestQueue對象,這是很是浪費資源的,基本上在每個須要和網絡交互的Activity中建立一個RequestQueue對象就足夠了。服務器
2. 接下來爲了要發出一條HTTP請求,咱們還須要建立一個StringRequest對象,以下所示:網絡
StringRequest stringRequest = new StringRequest("http://www.baidu.com", new Response.Listener<String>() { public void onResponse(String response) { Log.d("TAG", response); } }, new Response.ErrorListener() { public void onErrorResponse(VolleyError error) { Log.e("TAG", error.toString() ); } });
能夠看到,這裏new出了一個StringRequest對象,StringRequest的構造函數須要傳入三個參數,第一個參數就是目標服務器的URL地址,第二個參數是服務器響應成功的回調,第三個參數是服務器響應失敗的回調。併發
此外還有:(替換Response.Listener相應數據類型:JSONObject/Bitmap)函數
1) JsonRequest:抽象類,有JsonObjectRequest和JsonArrayRequest兩個子類,用於請求JSON數據和數組。高併發
2) ImageRequest:加載網絡圖片佈局
3) ImageLoader:也能夠用於加載網絡上的圖片,而且它的內部也是使用ImageRequest來實現的,不過ImageLoader明顯要比ImageRequest更加高效,由於它不只能夠幫咱們對圖片進行緩存,還能夠過濾掉重複的連接,避免重複發送請求。因爲ImageLoader已經不是繼承自Request的了,因此它的用法也和咱們以前學到的內容有所不一樣,總結起來大體能夠分爲如下四步:
A. 建立一個RequestQueue對象,同上。
B. 建立一個ImageLoader對象:
ImageLoader imageLoader = new ImageLoader(mQueue, new ImageCache() { public void putBitmap(String url, Bitmap bitmap) { } public Bitmap getBitmap(String url) { return null; } });
C. 獲取一個ImageListener對象:
ImageListener listener = ImageLoader.getImageListener(imgView, R.drawable.def_image, R.drawable.failed_image);
D. 調用ImageLoader的get()方法加載網絡上的圖片:
imageLoader.get("http://img.my.csdn...jpeg", listener,200,200); //第三四個參數限制圖片大小,可選
4) NetworkImageView:是一個自定義控制,它是繼承自ImageView的,具有ImageView控件的全部功能,而且在原生的基礎之上加入了加載網絡圖片的功能:
A. 在佈局中直接使用<com.android.volley.toolbox.NetworkImageView>
B. 獲得了NetworkImageView控件的實例以後,咱們能夠調用它的setDefaultImageResId()、setErrorImageResId() setImageUrl()方法來分別設置加載中/加載失敗以及目標圖片的URL地址
5) 自定義Request:
能夠參考StringRequest自定義其餘的請求:
如 XMLRequest:用於請求一條XML格式的數據,在Listener中使用XmlPullParser參數。
GsonRequest:用於解析Gson數據,須要導入Gson包。