极客学院的Volley

配置

compile files('libs/Volley.jar')
用来管理全局的请求

public class MyApplication extends Application {
    public static RequestQueue queue;

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        queue = Volley.newRequestQueue(getApplicationContext());
    }
    
    public static RequestQueue getHttpQueue() {
        return queue;
    }
}

MainActivity

Get和Post用于与服务器间请求和发送数据。


建立请求首先建立队列,将请求添加到请求队列里。
然后进行相应的Get和Post请求,请求结果在回调里获取解析。

Volley有自己的请求队列管理机制,可以控制每个请求的建立与取消。非常方便和安全。
这样也就可以做到随时控制某个请求在什么时候结束,Activity生命周期关联,防止无谓的请求。

/**
 * 1VolleyGetPost请求方式的使用
 * 
 * 2Volley的网络请求队列建立和取消队列请求及Activity周期关联
 */

public class MainActivity extends Activity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      // volley_Get();
      volley_Post();
   }

   @Override
   protected void onStop() {
      super.onStop();
      MyApplication.getHttpQueue().cancelAll("abcPost");
      MyApplication.getHttpQueue().cancelAll("abcGet");
   }

   private void volley_Post() {
      String url = "http://apis.juhe.cn/mobile/get?";
      StringRequest request = new StringRequest(Method.POST, url,
            new Listener<String>() {

               @Override
               public void onResponse(String arg0) {
                  Toast.makeText(MainActivity.this, arg0,
                        Toast.LENGTH_LONG).show();
               }
            }, new Response.ErrorListener() {

               @Override
               public void onErrorResponse(VolleyError arg0) {
                  Toast.makeText(MainActivity.this, "网络请求失败",
                        Toast.LENGTH_LONG).show();
               }
            }) {
         @Override
         protected Map<String, String> getParams() throws AuthFailureError {
            HashMap<String, String> map = new HashMap<String, String>();
            map.put("phone", "13666666666");
            map.put("key", "335adcc4e891ba4e4be6d7534fd54c5d");
            return map;
         }
      };
      request.setTag("abcPost");
      MyApplication.getHttpQueue().add(request);
   }

   private void volley_Get() {
      String url = "http://apis.juhe.cn/mobile/get?phone=13666666666&key=335adcc4e891ba4e4be6d7534fd54c5d";
      StringRequest request = new StringRequest(Method.GET, url,
            new Listener<String>() {

               @Override
               public void onResponse(String arg0) {
                  Toast.makeText(MainActivity.this, arg0,
                        Toast.LENGTH_LONG).show();
               }
            }, new Response.ErrorListener() {

               @Override
               public void onErrorResponse(VolleyError arg0) {
                  Toast.makeText(MainActivity.this, "网络请求失败",
                        Toast.LENGTH_LONG).show();
               }
            });
      request.setTag("abcGet");
      MyApplication.getHttpQueue().add(request);
   }
}

能使网络通信更快,更简单,更健壮
Get、Post网络请求及网络图像的高效率异步处理请求
可以对网络请求进行排序优先级管理
网络请求的缓存
多级别取消请求
和Activity生命周期的联动(Activity结束时同时取消所有网络请求)
使用Volley可以简化一些网络通信的开发,当然Volley不适合大数据(large payloads )和流媒体的网络请求。例如上百兆的文件、视频下载。
Volley开源,可以进行定制修改也可以直接使用Jar包的形式。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值