久久久久在线观看_又色又爽又黄的免费视频播放_一区中文字幕_日韩电影在线播放

今日焦點(diǎn) 焦點(diǎn)資訊 營銷之道 企業(yè)報(bào)道 淘寶運(yùn)營 網(wǎng)站建設(shè) 軟件開發(fā) 400電話
  當(dāng)前位置: 首頁 » 資訊 » APP開發(fā) » 正文

Android Volley完全解析(一),初識(shí)Volley的基本用法

放大字體  縮小字體 發(fā)布日期:2017-04-24  瀏覽次數(shù):345  【去百度看看】
核心提示:1. Volley簡(jiǎn)介我們平時(shí)在開發(fā)Android應(yīng)用的時(shí)候不可避免地都需要用到網(wǎng)絡(luò)技術(shù),而多數(shù)情況下應(yīng)用程序都會(huì)使用HTTP協(xié)議來發(fā)送和接
 

1. Volley簡(jiǎn)介

我們平時(shí)在開發(fā)Android應(yīng)用的時(shí)候不可避免地都需要用到網(wǎng)絡(luò)技術(shù),而多數(shù)情況下應(yīng)用程序都會(huì)使用HTTP協(xié)議來發(fā)送和接收網(wǎng)絡(luò)數(shù)據(jù)。Android系統(tǒng)中主要提供了兩種方式來進(jìn)行HTTP通信,HttpURLConnection和HttpClient,幾乎在任何項(xiàng)目的代碼中我們都能看到這兩個(gè)類的身影,使用率非常高。

不過HttpURLConnection和HttpClient的用法還是稍微有些復(fù)雜的,如果不進(jìn)行適當(dāng)封裝的話,很容易就會(huì)寫出不少重復(fù)代碼。于是乎,一些Android網(wǎng)絡(luò)通信框架也就應(yīng)運(yùn)而生,比如說AsyncHttpClient,它把HTTP所有的通信細(xì)節(jié)全部封裝在了內(nèi)部,我們只需要簡(jiǎn)單調(diào)用幾行代碼就可以完成通信操作了。再比如Universal-Image-Loader,它使得在界面上顯示網(wǎng)絡(luò)圖片的操作變得極度簡(jiǎn)單,開發(fā)者不用關(guān)心如何從網(wǎng)絡(luò)上獲取圖片,也不用關(guān)心開啟線程、回收?qǐng)D片資源等細(xì)節(jié),Universal-Image-Loader已經(jīng)把一切都做好了。

Android開發(fā)團(tuán)隊(duì)也是意識(shí)到了有必要將HTTP的通信操作再進(jìn)行簡(jiǎn)單化,于是在2013年Google I/O大會(huì)上推出了一個(gè)新的網(wǎng)絡(luò)通信框架——Volley。Volley可是說是把AsyncHttpClient和Universal-Image-Loader的優(yōu)點(diǎn)集于了一身,既可以像AsyncHttpClient一樣非常簡(jiǎn)單地進(jìn)行HTTP通信,也可以像Universal-Image-Loader一樣輕松加載網(wǎng)絡(luò)上的圖片。除了簡(jiǎn)單易用之外,Volley在性能方面也進(jìn)行了大幅度的調(diào)整,它的設(shè)計(jì)目標(biāo)就是非常適合去進(jìn)行數(shù)據(jù)量不大,但通信頻繁的網(wǎng)絡(luò)操作,而對(duì)于大數(shù)據(jù)量的網(wǎng)絡(luò)操作,比如說下載文件等,Volley的表現(xiàn)就會(huì)非常糟糕。

下圖所示的這些應(yīng)用都是屬于數(shù)據(jù)量不大,但網(wǎng)絡(luò)通信頻繁的,因此非常適合使用Volley。

2. 下載Volley

介紹了這么多理論的東西,下面我們就準(zhǔn)備開始進(jìn)行實(shí)戰(zhàn)了,首先需要將Volley的jar包準(zhǔn)備好,如果你的電腦上裝有Git,可以使用如下命令下載Volley的源碼:

[plain] view plaincopy在CODE上查看代碼片派生到我的代碼片
 
  1. git clone https://android.googlesource.com/platform/frameworks/volley  

下載完成后將它導(dǎo)入到你的Eclipse工程里,然后再導(dǎo)出一個(gè)jar包就可以了。如果你的電腦上沒有Git,那么也可以直接使用我導(dǎo)出好的jar包,下載地址是:http://www.kwstu.com/ResourcesView/kwstu_201441183330928 。

 

新建一個(gè)Android項(xiàng)目,將volley.jar文件復(fù)制到libs目錄下,這樣準(zhǔn)備工作就算是做好了。

3. StringRequest的用法

前面已經(jīng)說過,Volley的用法非常簡(jiǎn)單,那么我們就從最基本的HTTP通信開始學(xué)習(xí)吧,即發(fā)起一條HTTP請(qǐng)求,然后接收HTTP響應(yīng)。首先需要獲取到一個(gè)RequestQueue對(duì)象,可以調(diào)用如下方法獲取到:

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
 
  1. RequestQueue mQueue = Volley.newRequestQueue(context);  

注意這里拿到的RequestQueue是一個(gè)請(qǐng)求隊(duì)列對(duì)象,它可以緩存所有的HTTP請(qǐng)求,然后按照一定的算法并發(fā)地發(fā)出這些請(qǐng)求。RequestQueue內(nèi)部的設(shè)計(jì)就是非常合適高并發(fā)的,因此我們不必為每一次HTTP請(qǐng)求都創(chuàng)建一個(gè)RequestQueue對(duì)象,這是非常浪費(fèi)資源的,基本上在每一個(gè)需要和網(wǎng)絡(luò)交互的Activity中創(chuàng)建一個(gè)RequestQueue對(duì)象就足夠了。

 

接下來為了要發(fā)出一條HTTP請(qǐng)求,我們還需要?jiǎng)?chuàng)建一個(gè)StringRequest對(duì)象,如下所示:

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
 
  1. StringRequest stringRequest = new StringRequest("http://www.baidu.com",  
  2.                         new Response.Listener<String>() {  
  3.                             @Override  
  4.                             public void onResponse(String response) {  
  5.                                 Log.d("TAG", response);  
  6.                             }  
  7.                         }, new Response.ErrorListener() {  
  8.                             @Override  
  9.                             public void onErrorResponse(VolleyError error) {  
  10.                                 Log.e("TAG", error.getMessage(), error);  
  11.                             }  
  12.                         });  

可以看到,這里new出了一個(gè)StringRequest對(duì)象,StringRequest的構(gòu)造函數(shù)需要傳入三個(gè)參數(shù),第一個(gè)參數(shù)就是目標(biāo)服務(wù)器的URL地址,第二個(gè)參數(shù)是服務(wù)器響應(yīng)成功的回調(diào),第三個(gè)參數(shù)是服務(wù)器響應(yīng)失敗的回調(diào)。其中,目標(biāo)服務(wù)器地址我們填寫的是百度的首頁,然后在響應(yīng)成功的回調(diào)里打印出服務(wù)器返回的內(nèi)容,在響應(yīng)失敗的回調(diào)里打印出失敗的詳細(xì)信息。

 

最后,將這個(gè)StringRequest對(duì)象添加到RequestQueue里面就可以了,如下所示:

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
 
  1. mQueue.add(stringRequest);  

另外,由于Volley是要訪問網(wǎng)絡(luò)的,因此不要忘記在你的AndroidManifest.xml中添加如下權(quán)限:

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
 
  1. <uses-permission android:name="android.permission.INTERNET" />  

 

好了,就是這么簡(jiǎn)單,如果你現(xiàn)在運(yùn)行一下程序,并發(fā)出這樣一條HTTP請(qǐng)求,就會(huì)看到LogCat中會(huì)打印出如下圖所示的數(shù)據(jù)。

 

沒錯(cuò),百度返回給我們的就是這樣一長串的HTML代碼,雖然我們看起來會(huì)有些吃力,但是瀏覽器卻可以輕松地對(duì)這段HTML代碼進(jìn)行解析,然后將百度的首頁展現(xiàn)出來。

這樣的話,一個(gè)最基本的HTTP發(fā)送與響應(yīng)的功能就完成了。你會(huì)發(fā)現(xiàn)根本還沒寫幾行代碼就輕易實(shí)現(xiàn)了這個(gè)功能,主要就是進(jìn)行了以下三步操作:

1. 創(chuàng)建一個(gè)RequestQueue對(duì)象。

2. 創(chuàng)建一個(gè)StringRequest對(duì)象。

3. 將StringRequest對(duì)象添加到RequestQueue里面。

不過大家都知道,HTTP的請(qǐng)求類型通常有兩種,GET和POST,剛才我們使用的明顯是一個(gè)GET請(qǐng)求,那么如果想要發(fā)出一條POST請(qǐng)求應(yīng)該怎么做呢?StringRequest中還提供了另外一種四個(gè)參數(shù)的構(gòu)造函數(shù),其中第一個(gè)參數(shù)就是指定請(qǐng)求類型的,我們可以使用如下方式進(jìn)行指定:

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
 
  1. StringRequest stringRequest = new StringRequest(Method.POST, url,  listener, errorListener);  

 

 
長春  短信群發(fā)  吉林省  紅視窗  中國  長春市  玉米  長春網(wǎng)站建設(shè)  網(wǎng)站  振華  設(shè)備  設(shè)計(jì)  吉林  廣州  撲克  聯(lián)合聲明  敘利亞  美國  美國白宮  新聞中心  白宮  化學(xué)武器  指示  記者會(huì)  內(nèi)蒙古  化武  塞內(nèi)加爾  滿洲里  消費(fèi)者權(quán)益  敘政府  中國政府  毒品  長春上門維修電腦  小雨  中消協(xié)  強(qiáng)臺(tái)風(fēng)  北京市  非洲  日本  消費(fèi)者  臺(tái)風(fēng)  海外網(wǎng)  中非  中非合作論壇  國家元首  圓桌  經(jīng)濟(jì)  大阪  突擊步槍  重慶市  俄羅斯  網(wǎng)站建設(shè)  步槍  長春上門做系統(tǒng)  長春北大青鳥  黨委書記  長春上門修電腦  售前咨詢技巧  政治  龍頭企業(yè)  長春電腦上門維修  北斗導(dǎo)航  軍民  位置服務(wù)  黨委  產(chǎn)業(yè)園  中國電影  制造  中國智能建筑節(jié)  侯建國,質(zhì)量,中國特色社會(huì)主義  中國芯  特朗普  長春國貿(mào)  AJAX  PHP  中國移動(dòng)  小米  特朗普,貿(mào)易戰(zhàn),美國  政府  彈道導(dǎo)彈  f-35  XML  RSS  發(fā)布會(huì)  英國皇家海軍  運(yùn)載火箭  航母  美國人  一帶一路  塞申斯  中國市場(chǎng)  今日頭條  微博  戰(zhàn)斗機(jī)  州長  中國軍網(wǎng)  檢察官  發(fā)言人  劉強(qiáng)東  戰(zhàn)機(jī) 
 
[ 資訊搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 違規(guī)舉報(bào) ]  [ 關(guān)閉窗口 ]

 
0條 [查看全部]  相關(guān)評(píng)論

 
網(wǎng)站首頁 | 關(guān)于我們 | 聯(lián)系方式 | 使用協(xié)議 | 版權(quán)隱私 | 網(wǎng)站地圖 | 排名推廣 | 廣告服務(wù) | 積分換禮 | 網(wǎng)站留言 | RSS訂閱 | 吉ICP備19006030號(hào)-4
企業(yè)800網(wǎng) · 提供技術(shù)支持