Android第九讲——网络(五) Volley

Volley封装成线程池 简化了连接网络
流程图:
这里写图片描述
RequserQueue
StringRequest 四个参数 请求的方法,url,两个listener 一个成功的,一个失败的
要ResquestQueue.add(request)//单例不同

分为doGet、doPost。doPost时StringRequest后边+{
//POST方法时必须要加
@Override
protected Map<String, String> getParams() throws AuthFailureError {
HashMap<String,String> hashMap = new HashMap<>();
hashMap.put(“username”,”King”);
return hashMap;
}
}

NetworkImageView用来展示网络上的图片,使用ImageLoader

将RequestQueue单例

/**
 * 单例,防止按一次按钮生成一次对象
 * Created by Went_Gone on 2015/9/14.
 */
public class MySigleLeton {
//    private String url;
    private RequestQueue queue;
    private static Context context;
    private ImageLoader mImageLoader;
    private static MySigleLeton mySigleLeton;
    private MySigleLeton(Context context){
        this.context = context;
        queue = getQueue();
        mImageLoader = new ImageLoader(queue,
                new ImageLoader.ImageCache() {
                    private final LruCache<String, Bitmap>
                            cache = new LruCache<String, Bitmap>(20);

                    @Override
                    public Bitmap getBitmap(String url) {
                        return cache.get(url);
                    }

                    @Override
                    public void putBitmap(String url, Bitmap bitmap) {
                        cache.put(url, bitmap);
                    }
                });
    }
    public static synchronized MySigleLeton getInstance(Context context){
        if (mySigleLeton == null){
            mySigleLeton = new MySigleLeton(context);
        }
        return mySigleLeton;
    }

    public RequestQueue getQueue() {
        if (queue==null){
            // getApplicationContext() is key, it keeps you from leaking the
            // Activity or BroadcastReceiver if someone passes one in.
            queue = Volley.newRequestQueue(context.getApplicationContext());
        }
        return queue;
    }

    public <T> void addToRequestQueue(Request req) {
        getQueue().add(req);
    }

    public ImageLoader getImageLoader() {
        return mImageLoader;
    }
}

Activity中

public class VolleyActivity extends AppCompatActivity implements View.OnClickListener{
    private Button mBtnVolley;
    private Button mBtnVolleyPost;
    private Button mBtnVolleyImageView;
    private TextView mTextViewResponse;
    private NetworkImageView imageView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_volley);
        mBtnVolley = (Button) findViewById(R.id.button_internet_volley);
        mBtnVolleyPost = (Button) findViewById(R.id.button_internet_volley_POST);
        mBtnVolleyImageView = (Button) findViewById(R.id.button_internet_volley_imageview);
        imageView = (NetworkImageView) findViewById(R.id.networkimageview);
        mTextViewResponse = (TextView) findViewById(R.id.textview_volley);
        mBtnVolley.setOnClickListener(this);
        mBtnVolleyPost.setOnClickListener(this);
        mBtnVolleyImageView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button_internet_volley:
//                RequestQueue queue = Volley.newRequestQueue(getApplicationContext());//ReduestQueue 对象创建   Volley.newRequestQueue(Context)
                StringRequest request = new StringRequest(Request.Method.GET, "http://192.168.***.*:8080/HTTpTest_Servelet/ServeletTest?username=Queue", new Response.Listener() {
                    @Override
                    public void onResponse(String response) {
                        mTextViewResponse.setText(response);
                        mTextViewResponse.setTextColor(Color.GREEN);
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        mTextViewResponse.setText("网络连接错误");
                    }
                });//GET时一共四个参数
               MySigleLeton.getInstance(getApplicationContext()).getQueue().add(request);//单例  防止按一次按钮生成一次对象
//                queue.add(request);
                break;
            case R.id.button_internet_volley_POST:
//                RequestQueue queuePost = Volley.newRequestQueue(getApplicationContext());//ReduestQueue 对象创建   Volley.newRequestQueue(Context)
                StringRequest requestPost = new StringRequest(Request.Method.POST, "http://192.168.***.**:8080/HTTpTest_Servelet/ServeletTest", new Response.Listener() {
                    @Override
                    public void onResponse(String response) {
                        mTextViewResponse.setText(response);
                        mTextViewResponse.setTextColor(Color.GREEN);
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        mTextViewResponse.setText("网络连接错误");
                    }
                }){
                    //POST方法时必须要加
                    @Override
                    protected Map<String, String> getParams() throws AuthFailureError {
                        HashMap<String,String> hashMap = new HashMap<>();
                        hashMap.put("username","King");
                        return hashMap;
                    }
                };//GET时一共四个参数
                MySigleLeton.getInstance(getApplicationContext()).getQueue().add(requestPost);
//                queuePost.add(requestPost);
                break;
            case R.id.button_internet_volley_imageview:
                imageView.setImageUrl("http://img.taopic.com/uploads/allimg/130512/267865-1305120S63212.jpg",MySigleLeton.getInstance(getApplicationContext()).getImageLoader());
                break;
            default:
                break;
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值