Volley 的基本用法

Volley簡介

Volley :在2013年Google I/O大會上推出的新的網(wǎng)絡通信框架。Volley既可以像AsyncHttpClient一樣非常簡單地進行HTTP通信,也可以像Universal-Image-Loader 一樣輕松下載網(wǎng)絡上的圖片苍在。

Volley特別適合數(shù)據(jù)量不大但是通信頻繁的場景。

Volley提供的功能

  • JSON,圖像等的異步下載
  • 網(wǎng)絡請求的排序
  • 網(wǎng)絡請求的優(yōu)先級處理
  • 緩存
  • 多級別取消請求
  • 和Activity和生命周期的聯(lián)動(Activity技術時同時取消所有網(wǎng)絡請求)

Volley中的RequestQueue和Request

  • RequestQueue 用來執(zhí)行請求的請求隊列
  • Request 用來構(gòu)造一個請求對象
  • Request對象主要有以下幾種類型:
  • StringRequest 響應的主題為字符串
  • JSONArrayRequest 發(fā)死你個和接收JSON數(shù)組
  • JsonObjectRequest 發(fā)送和接收JSON對象
  • ImageRequest 發(fā)送和接收Image

StringRequest的用法

  • 創(chuàng)建一個RequestQueue
private RequestQueue mRequestQueue;
mRequestQueue = Volley.newRequestQueue(this);
  • 創(chuàng)建一個StringRequest對象
StringRequest stringRequest = new StringRequest("http://www.baidu.com",
        new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
                Log.d("TAG", s);
            }
        },
       new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError volleyError) {
        Log.e("TAG",volleyError.getMessage(),volleyError);
    }
});
  • 將StringRequest對象添加到RequestQueue里面
mRequestQueue.add(stringRequest);

JsonRequest

JsonRequest是一個抽象類,無法直接創(chuàng)建它的實例目木,只能從他的子類入手。JsonRequest有兩個子類JsonObjectRequest和JsonArrayRequest懊渡。前者用于請求一段JSON數(shù)據(jù)刽射,后者用于請求一段JSON數(shù)組的军拟。

  • 創(chuàng)建一個RequestQueue
private RequestQueue mRequestQueue;
mRequestQueue = Volley.newRequestQueue(this);
  • 創(chuàng)建一個JSonObjectRequest對象
    其中需要四個參數(shù),第一個參數(shù)是一個URl 誓禁,第二個參數(shù)代表Http方法懈息,第三個和第四個分別是響應監(jiān)聽和響應錯誤監(jiān)聽。分別要覆蓋onResponse()和onErrorResponse()方法摹恰,RequestQueue將會執(zhí)行請求辫继,并響應回調(diào)onResponse()方法,所以要在onResponse()方法中實現(xiàn)自己的業(yè)務邏輯俗慈。
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("http://www.weather.com.cn/data/cityinfo/101190404.html", null,
        new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject jsonObject) {
                Log.d("TAG", jsonObject.toString());
            }
        }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError volleyError) {
        Log.e("TAG",volleyError.getMessage(),volleyError);
    }
});
  • 將JSonObjectRequest對象添加到RequestQueue里面
mRequestQueue.add(jsonObjectRequest);

ImageRequest的用法

  • 創(chuàng)建一個RequestQueue
private RequestQueue mRequestQueue;
mRequestQueue = Volley.newRequestQueue(this);
  • 創(chuàng)建一個ImageRequest對象
    參數(shù)的具體含義是:第一個參數(shù)是url姑宽,圖片的地址;第二個參數(shù)是Listener是請求響應成功的回調(diào)姜盈;第三個參數(shù)maxWidth是圖片的最大寬度低千;第四個參數(shù)maxHeight是圖片的最大高度配阵;第五個參數(shù)是圖片的顏色屬性馏颂;第六個參數(shù)ErrorListener是請求響應失敗回調(diào)。

注意:如果指定的網(wǎng)絡圖片的寬度或者高度大于這里的最大值棋傍,則會對圖片進行壓縮救拉;指定成0的話,就表示不管圖片多大瘫拣,都不會進行壓縮亿絮。

ImageRequest imageRequest = new ImageRequest("http://img5.duitang.com/uploads/item/201409/14/20140914162144_MBEmX.jpeg",
        new Response.Listener<Bitmap>() {
            @Override
            public void onResponse(Bitmap bitmap) {
                imageView.setImageBitmap(bitmap);
                Toast.makeText(MainActivity.this,"suceess",Toast.LENGTH_SHORT).show();

            }
        }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError volleyError) {
        imageView.setImageResource(R.mipmap.ic_launcher);
        Toast.makeText(MainActivity.this,"error",Toast.LENGTH_SHORT).show();
    }
});
  • 將ImageRequest對象添加到RequesQueue里面
mRequestQueue.add(imageRequest);

ImageLoader的用法

  • 創(chuàng)建一個RequestQueue對象
  • 創(chuàng)建一個ImageLoader對象
  • 獲取一個ImageListener對象
  • 調(diào)用ImageLoader的get()方法加載網(wǎng)絡上的圖片。
ImageLoader mImageLoader;
mImageLoader = VolleySingleton.getVolleySingleton(this.getApplicationContext()).getImageLoader();
mImageLoader.get(IMAGE_URL,ImageLoader.getImageListener(imageView,R.mipmap.ic_launcher,R.mipmap.failed_image));

NetworkImageView的用法

  • 創(chuàng)建一個RequestQueue對象
  • 創(chuàng)建一個ImageLoader對象
  • 在布局文件中添加一個NetworkImageView控件
<com.android.volley.toolbox.NetworkImageView  
  android:id="@+id/network_image_view" 
   android:layout_width="200dp"    
android:layout_height="200dp"  
  android:layout_gravity="center_horizontal"    
/>
  • 在代碼中獲取該控件的實例
  • 設置要加載的圖片的地址
ImageLoader mImageLoader ;
NetworkImageView networkImageView;
networkImageView =(NetworkImageView)findViewById(R.id.network_image_view);
mImageLoader = VolleySingleton.getVolleySingleton(this.getApplicationContext()).getImageLoader();
networkImageView.setImageUrl(IMAGE_URL,mImageLoader);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末麸拄,一起剝皮案震驚了整個濱河市派昧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拢切,老刑警劉巖蒂萎,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異淮椰,居然都是意外死亡五慈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門主穗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泻拦,“玉大人,你說我怎么就攤上這事忽媒≌眨” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵晦雨,是天一觀的道長架曹。 經(jīng)常有香客問我灯抛,道長,這世上最難降的妖魔是什么音瓷? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任对嚼,我火速辦了婚禮,結(jié)果婚禮上绳慎,老公的妹妹穿的比我還像新娘纵竖。我一直安慰自己,他們只是感情好杏愤,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布靡砌。 她就那樣靜靜地躺著,像睡著了一般珊楼。 火紅的嫁衣襯著肌膚如雪通殃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天厕宗,我揣著相機與錄音画舌,去河邊找鬼。 笑死已慢,一個胖子當著我的面吹牛曲聂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播佑惠,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼朋腋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了膜楷?” 一聲冷哼從身側(cè)響起旭咽,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赌厅,沒想到半個月后穷绵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡察蹲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年请垛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洽议。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡宗收,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出亚兄,到底是詐尸還是另有隱情混稽,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站匈勋,受9級特大地震影響礼旅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜洽洁,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一痘系、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧饿自,春花似錦汰翠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至烛卧,卻和暖如春佛纫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背总放。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工呈宇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人间聊。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓攒盈,卻偏偏與公主長得像抵拘,于是被迫代替她去往敵國和親哎榴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 1. Volley簡介 我們平時在開發(fā)Android應用的時候不可避免地都需要用到網(wǎng)絡技術僵蛛,而多數(shù)情況下應用程序都...
    奧利奧龍卷風閱讀 482評論 0 2
  • 1. 功能介紹 1.1. Volley Volley 是 Google 推出的 Android 異步網(wǎng)絡請求框架和...
    愛碼士平頭哥閱讀 1,821評論 0 9
  • Volley框架 Volley是Google官方出的一套小而巧的異步請求庫尚蝌,該框架封裝的擴展性很強,支持HttpC...
    void_Zhao閱讀 10,700評論 2 2
  • Volley簡介 Volley 是 Google I/O 2013上發(fā)布的網(wǎng)絡通信庫充尉,使網(wǎng)絡通信更快飘言、更簡單、更健...
    shenhuniurou閱讀 924評論 0 3
  • 什么是扁平苔蘚OLP驼侠? 扁平苔蘚是一種慢性炎性疾病姿鸿,在口腔粘膜病中發(fā)病率僅次于RAU。其長期糜爛病損有惡變現(xiàn)象倒源,屬...
    RQRR閱讀 1,214評論 0 0