Volleyフレームワークの学習まとめ(1)

6115 ワード

1 Volleyの主な機能:
  • ネットワーク要求データ非同期ダウンロード;
  • ネットワーク要求の優先度処理
  • 要求データのキャッシュ処理;
  • マルチレベルキャンセル要求
  • とActivityとライフサイクルの連動(Activityの終了時にすべてのネットワークリクエストを同時にキャンセル)
  • 手順:


    1.要求キューの作成:RequestQueue mQueue=Volley.newRequestQueue(this);
    2.要求先:ImageRequest imageRequest=new ImageRequest()
    3.要求キューに要求オブジェクトを追加する:mQueue.add(imageRequest);
    4.キャンセル要求:mQueue.cancelAll(this);
    コードは次のとおりです.
    package com.example.kaiwei.vollydemo1;
    
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import com.android.volley.RequestQueue;
    import com.android.volley.Response;
    import com.android.volley.VolleyError;
    import com.android.volley.toolbox.ImageRequest;
    import com.android.volley.toolbox.StringRequest;
    import com.android.volley.toolbox.Volley;
    
    public class MainActivity extends Activity {
        // ;
        private RequestQueue mQueue;
        private TextView textview;
        private ImageView imageview;
        private final String url_weather = "http://www.weather.com.cn/adat/cityinfo/101010100.html";
        private final String url_image = "http://i.tq121.com.cn/i/wap/logo.png";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            textview = (TextView) findViewById(R.id.textview);
            imageview = (ImageView) findViewById(R.id.imageview);
            mQueue = Volley.newRequestQueue(this);
            loadJson();
            loadImageView();
        }
        private void loadImageView() {
            // ;
            ImageRequest imageRequest = new ImageRequest(
                    url_image,
                    new Response.Listener<Bitmap>() {
                        @Override
                        public void onResponse(Bitmap response) {
                            imageview.setImageBitmap(response);
                        }
                    }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    imageview.setImageResource(R.drawable.ic_launcher);
                }
            });
            // ;
            mQueue.add(imageRequest);
        }
    
        private void loadJson() {
            // TODO Auto-generated method stub
            //json ;
            StringRequest stringRequest = new StringRequest(url_weather,
                    new Response.Listener<String>() {
                        @Override
                        public void onResponse(String response) {
                            Log.d("response", response);
                            textview.setText(response);
                            System.out.println("response" + response);
                        }
                    }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e("response", error.getMessage(), error);
                }
            });
            // ;
            mQueue.add(stringRequest);
        }
        @Override
        protected void onStop() {
            super.onStop();
            // 
            mQueue.cancelAll(this);
        }
    }
    

    実行結果:「weatherinfo」:{「city」:」「北京」,「cityid」:「101010100」,「temp 1」:「15°C」,「temp 2」:「5°C」,「weather」:「多雲」,「img 1」:「d 1.gif」,「img 2」:「n 1.gif」,「ptime」:「08:00」}}