volley

volley是google在2013年發佈的一個處理或緩存網絡請求的庫,他的主要功能是請求網絡json數據和加載圖片,能使網絡通信更簡單,更快,更健壯。他適用於網絡請求數據頻繁但數據量不大的操作。

volley使用了線程池作爲基礎的架構,主要分爲主線程,cache線程和network線程。主線程和cache線程只有一個,而花心的network線程可以有多個,因爲這樣可以解決並行的問題,這樣世界就和諧了。

但是如何使用volley那?


一:請求json數據

第一步:肯定要有一個volley的jar包,這個包可以從githup上獲取

git clone https://android.googlesource.com/platform/frameworks/volley

第二步:導入jar包之後要幹嘛哪?

當然利用這個jar包請求數據,話說volley支持網絡請求json數據和加載網絡圖片,而我們首先來請求一下json數據

首先,必須得有一個 請求隊列的對象

a)RequestQueue mRequestQueue=Volley.RequestQueue(this);

第二步:當然要有你所請求數據的網址

b)String url="";

第三步:你所請求的數據是json數據,那就聲明一個json請求對象

c)JSONObjectRequest jsonRq=new JSONRequest() (Request.Method.GET,url,null,new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                Log.i(TAG,response.toString());
                parseJSON(response);
                va.notifyDataSetChanged();
           
            }
        },new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.i(TAG,error.getMessage());
            }
        });

第四步:將json請求對象加入到請求隊列中,若沒有這一步,數據啥的都是不出來的哦。
        d) mRequestQueue.add(jsonRq);


二: 使用volley異步加載圖片

網絡請求圖片的三種方式:

 1):應用ImageRequest單張的網絡請求圖片

singleImg=(ImageView)findViewById(R.id.volley_img_single_imgeview);
ImageRequest imgRequest=new ImageRequest(url, new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap arg0) {
// TODO Auto-generated method stub
singleImg.setImageBitmap(arg0);
}
}, 300, 200, Config.ARGB_8888, new ErrorListener(){
@Override
public void onErrorResponse(VolleyError arg0) {
// TODO Auto-generated method stub

}
});
mRequestQueue.add(imgRequest);

2)ImageLoader:


//聲明請求隊列

RequestQueue mRequestQueue = Volley.newRequestQueue(this);
final LruCache<String, Bitmap> mImageCache = new LruCache<String, Bitmap>(
20);
ImageCache imageCache = new ImageCache() {
@Override
public void putBitmap(String key, Bitmap value) {
mImageCache.put(key, value);
}


@Override
public Bitmap getBitmap(String key) {
return mImageCache.get(key);
}
};
ImageLoader mImageLoader = new ImageLoader(mRequestQueue, imageCache);
// imageView是一個ImageView實例
// ImageLoader.getImageListener的第二個參數是默認的圖片resource id
// 第三個參數是請求失敗時候的資源id,可以指定爲0
ImageListener listener = ImageLoader
.getImageListener(imageView, android.R.drawable.ic_menu_rotate,
android.R.drawable.ic_delete);
mImageLoader.get("http://a.hiphotos.baidu.com/album/h%3D800%3Bcrop%3D0%2C0%2C1280%2C800/sign=5f024b518326cffc762ab2b2893a29e2/72f082025aafa40fa3bcf315aa64034f79f019fb.jpg", listener);
3): 使用NetWorkImageView

NetworkImageView繼承自ImageView,是Volley提供的一個全新的簡單加載圖片的控件

NetworkImageView netImgView=(NetworkImageView)findViewById(R.id.volley_img_networkimgeview);
netImgView.setTag("url");

netImgView.setImageUrl("http://a.hiphotos.baidu.com/album/h%3D800%3Bcrop%3D0%2C0%2C1280%2C800/sign=5f024b518326cffc762ab2b2893a29e2/72f082025aafa40fa3bcf315aa64034f79f019fb.jpg",mImageLoader);




發佈了20 篇原創文章 · 獲贊 8 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章