为什么要在Android中使用RequestQueue?

穆罕默德·蒙杰兹(Mohammad Monjezi):

我是一名Android初学者。我想知道为什么我们应该在代码中使用RequestQueue并将JsonObjectRequest传递给RequestQueue作为参数。

在此处输入图片说明

Android_id:

排球使用两个类,RequestQueue和Request

RequestQueue是所有必须排队执行的请求的队列,它还管理工作线程并在后台维护网络调用,还处理从缓存中读取和写入缓存,还解析响应并将解析后的响应传递到主线程。

Request是构建网络请求的地方。request对象有3个主要请求:

  1. JSON请求

JsonObjectRequest —在给定URL上检索JSONObject响应主体的请求。
JsonArrayRequest —用于从服务器检索JSON数组。

请求带有3个传递给构造函数的参数。

  1. 请求方法类型(GET,POST,PUT ...)。
  2. 所需对象的资源URL。
  3. ResponseListener,其回调方法包含响应。
  4. 请求发生了ErrorListener的回调方法有错误的情况(提供的错误代码和可选的用户可读的)。

JsonObjectRequest和JsonArrayRequest的实现的代码段如下:

 String mJSONURLString= "json_url";
   JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, mJSONURLString, null,
           new Response.Listener<JSONObject>() {
               @Override
               public void onResponse(JSONObject response) {

               }
           },
           new Response.ErrorListener() {
               @Override
               public void onErrorResponse(VolleyError error) {

               }
           });
   //add JsonObjectRequest request to queue
   requestQueue.add(jsonObjectRequest);

   JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, url, null,
           new Response.Listener<JSONArray>() {
               @Override
               public void onResponse(JSONArray response) {

               }
           },
           new Response.ErrorListener() {
               @Override
               public void onErrorResponse(VolleyError error) {

               }
           });
   //add JsonArrayRequest to queue
   requestQueue.add(jsonArrayRequest);
  1. StringRequest —从服务器检索响应主体作为String。

    • 方法类型(GET,POST,...)。
    • 资源URL。
    • 事件监听器。

程式码片段如下:

StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
        new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
        // Do something with the response
    }
},
  1. ImageRequest-要从服务器接收图像,网络呼叫的结构与其他网络请求类似。

程式码片段如下:

   String mImageURLString= "";
   ImageRequest imageRequest = new ImageRequest(mImageURLString= , new Response.Listener<Bitmap>() {
       @Override
       public void onResponse(Bitmap response) {
           // Assign the response to an ImageView
           ImageView imageView = (ImageView) findViewById(R.id.imageView);
           imageView.setImageBitmap(response);
       }
   }, 0,0, null);//Image width,Image height
   //add request to queue
   requestQueue.add(imageRequest);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章