Volley網絡鏈接

1、Volleyphp

a burst or emission of many things or a large amount at oncejava

Volley是Android平臺上的網絡通訊庫,能使網絡通訊更快,更簡單,更健壯。android

 

2、特色json

異步任務下載圖片的操做存在幾個問題網絡

一、  代碼量大且繁瑣app

二、  ListView滾動太快,可能致使下載的圖片沒法正常顯示異步

三、  可能浪費系統資源ide

四、  旋轉屏幕可能致使再次下載測試

由此提出使用Volley替代 網絡操做大數據

可是隻適合簡單的網絡操做:

一、  json/xml文本數據

二、  圖片加載

不能用於大數據的下載 和 文件的上傳

 

3、使用前準備

找到volley文件 (sdk版本文件下com/android/volley)

將volley文件內的內容(全部文件)複製到項目com.android.volley包下

       刪除類名帶有Text 的測試java文件

 

4、下載文本數據的方法

一、StringRequest

 1 package com.xqx.volleydemo;
 2 
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.widget.TextView;
 6 
 7 import com.android.volley.RequestQueue;
 8 import com.android.volley.Response;
 9 import com.android.volley.toolbox.JsonArrayRequest;
10 import com.android.volley.toolbox.StringRequest;
11 import com.android.volley.toolbox.Volley;
12 
13 public class MainActivity extends Activity {
14     
15     //一、聲明RequestQueue
16     private RequestQueue requestQueue;
17     private TextView tv_show;
18     @Override
19     public void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.activity_main);
22         String url = "http://ikft.house.qq.com/index.php?guid=866500021200250&devua=appkft_1080_1920_XiaomiMI4LTE_1.8.3_Android19&order=0&searchtype=normal&devid=866500021200250&appname=QQHouse&mod=appkft&act=searchhouse&channel=71&page=1&rn=20&cityid=1";
23         tv_show = (TextView) findViewById(R.id.tv_show);
24         //二、實例化RequestQueue對象
25         requestQueue = Volley.newRequestQueue(this);
26         //下載數據,返回字符串格式的數據
27         StringRequest request = new StringRequest(url, new Response.Listener<String>() {
28             @Override
29             public void onResponse(String response) {
30                 //獲得字符串數據response
31                 tv_show.setText(response);
32             }
33         }, null);
34         //三、將請求添加到隊列中
35         requestQueue.add(request);
36     }
37 
38 }
MainActivity.java
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3               android:orientation="vertical"
 4               android:layout_width="fill_parent"
 5               android:layout_height="fill_parent"
 6         >
 7 
 8     <TextView
 9             android:layout_gravity="center"
10             android:gravity="center"
11             android:layout_width="fill_parent"
12             android:layout_height="wrap_content"
13             android:text="下載的內容"
14             android:id="@+id/tv_show"
15             />
16     
17     
18 </FrameLayout>
activity_main

 二、JsonObjectRequest

 1 JsonObjectRequest request=new JsonObjectRequest(Method.GET, url, null,
 2                 new Response.Listener<JSONObject>() {
 3                     @Override
 4                     public void onResponse(JSONObject response) {
 5                         // TODO 請求成功
 6                         try {
 7                             JSONArray array=response.getJSONArray("data");
 8                             parseJson(array);
 9                         } catch (JSONException e) {
10                             e.printStackTrace();
11                         }
12                         
13                     }
14                 }, new Response.ErrorListener() {
15                     @Override
16                     public void onErrorResponse(VolleyError error) {
17                         // TODO Auto-generated method stub
18                         Toast.makeText(getApplicationContext(), "請求出錯", 0).show();
19                     }
20                 });
method

 

5、加載圖片的方法

一、ImageRequest 

 1 package com.xqx.volleydemo;
 2 
 3 import android.app.Activity;
 4 import android.graphics.Bitmap;
 5 import android.os.Bundle;
 6 import android.widget.ImageView;
 7 
 8 import com.android.volley.RequestQueue;
 9 import com.android.volley.Response;
10 import com.android.volley.VolleyError;
11 import com.android.volley.toolbox.ImageRequest;
12 import com.android.volley.toolbox.Volley;
13 
14 public class MainActivity extends Activity {
15     //一、聲明RequestQueue
16     private RequestQueue requestQueue;
17     private ImageView img_show;
18     @Override
19     public void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.activity_main);
22         img_show = (ImageView) findViewById(R.id.img_show);
23         //二、實例化RequestQueue對象
24         requestQueue = Volley.newRequestQueue(this);
25         //加載圖片
26         ImageRequest request = new ImageRequest("http://www.baidu.com/img/bd_logo.png",
27                 new Response.Listener<Bitmap>() {
28                     @Override
29                     public void onResponse(Bitmap response) {
30                     //圖片下載成功後回調此方法
31                         //TODO 設置ImageView
32                         img_show.setImageBitmap(response);
33                     }
34                 },
35                 //內存中Bitmap最大的寬度,高度限制,用於下降內存的消耗
36                 128, 64,
37                 //告訴BitmapFactory 在生產Bitmap的時候一個像素包含的信息
38                 Bitmap.Config.ARGB_8888,
39                 //圖片加載失敗的時候回調
40                 new Response.ErrorListener() {
41                     @Override
42                     public void onErrorResponse(VolleyError error) {
43                         //TODO 顯示加載失敗的圖片
44                         img_show.setImageResource(R.drawable.ic_launcher);
45                     }
46                 }
47         );
48         //三、將請求添加到隊列中
49         requestQueue.add(request);
50     }
51 }
MainActivity.java
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3               android:orientation="vertical"
 4               android:layout_width="fill_parent"
 5               android:layout_height="fill_parent"
 6         >
 7 
 8     
 9     <ImageView 
10         android:layout_width="match_parent"
11         android:layout_height="match_parent"
12         android:id="@+id/img_show"
13         />
14 </FrameLayout>
activity_main.xml

 

二、ImageLoader

 1 package com.xqx.volleydemo;
 2 
 3 import android.app.Activity;
 4 import android.graphics.Bitmap;
 5 import android.os.Bundle;
 6 import android.util.LruCache;
 7 import android.widget.ImageView;
 8 
 9 import com.android.volley.RequestQueue;
10 import com.android.volley.toolbox.ImageLoader;
11 import com.android.volley.toolbox.Volley;
12 
13 public class MainActivity extends Activity {
14     
15     //一、聲明RequestQueue
16     private RequestQueue requestQueue;
17     private ImageLoader imageloder;
18     private ImageView imgView;
19     @Override
20     public void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.activity_main);
23         imgView = (ImageView) findViewById(R.id.img_show);
24         
25         
26         imageloder = new ImageLoader(requestQueue, new ImageLoader.ImageCache() {
27 
28             private LruCache<String,Bitmap> cache = new LruCache<>(10);
29 
30             @Override
31             public Bitmap getBitmap(String url) {
32 
33                 return cache.get(url);
34             }
35 
36             @Override
37             public void putBitmap(String url, Bitmap bitmap) {
38                 cache.put(url,bitmap);
39             }
40         });
41         imageloder.get("http://www.baidu.com/img/bd_logo.png"
42                 , ImageLoader.getImageListener(imgView,R.drawable.ic_launcher,
43                 android.R.drawable.ic_media_pause));
44     }
45 
46 }
MainActivity.java
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3               android:orientation="vertical"
 4               android:layout_width="fill_parent"
 5               android:layout_height="fill_parent"
 6         >
 7 
 8 
 9     <ImageView 
10         android:layout_width="match_parent"
11         android:layout_height="match_parent"
12         android:id="@+id/img_show"
13         />
14 </FrameLayout>
activity_main.xml
相關文章
相關標籤/搜索