Volley框架的简单使用

一、Volley简介。

        1.Volley起源。

                Volley是2013年Google I/O上发布的一款网络框架,基于Android平台,能使网络通信更快,更简单,更健全。

        2.Volley框架的优点。

                1)网络请求的排序(scheduling)。

                2)网络请求的优先级处理。

                3)缓存。

                4)多级别取消请求。

                5)和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)。

                6)非常适合去进行数据量不大,但通信频繁的网络操作。

                7)可以自定义拓展。

        3.Volley框架的缺点

            对于大数据量的网络操作,比如说下载文件等,Volley的表现不好。

        4.项目地址

             1)官网地址:https://android.googlesource.com/platform/frameworks/volley

              2) jar包下载地址:http://download.csdn.net/detail/sinyu890807/7152015

二、Volley的基本使用

        1.Volley的API

            1)请求String类型数据:StringRequest

            2)请求JSON数据:JsonRequest

                    a)JsonObjectRequest 

                    b)JsonArrayRequest

            3)请求图片数据:ImageRequest

        2.Volley使用步骤

            1)导入jar包

            2)添加联网权限

                <uses-permission android:name="android.permission.INTERNET" />

            3)ApI的使用

三、Volley的案例

        1.网络请求

                1)get请求

// get请求
        bt_volley_get.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 创建一个请求队列
                RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this);

                // 网络数据地址
                String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";

                // 创建一个请求
                StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
                    @Override
                    public void onResponse(String s) {
                        // 设置显示结果
                        tv_volley_result.setText(s);
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        tv_volley_result.setText("请求失败");
                    }
                });

                // 将请求添加到请求队列中
                requestQueue.add(stringRequest);
            }
        });

                2)post请求

        // post请求
        bt_volley_post.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 创建一个请求队列
                RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this);

                // 网络数据地址
                String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";

                // 创建一个请求
                StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
                    @Override
                    public void onResponse(String s) {
                        // 设置显示结果
                        tv_volley_result.setText(s);
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        tv_volley_result.setText("加载失败");
                    }
                }){
                    // 添加请求参数的方法
                    @Override
                    protected Map<String, String> getParams() throws AuthFailureError {

                        Map<String,String> map = new HashMap<String, String>();
//                        map.put("value1","parame1");
                        return map;
                    }
                };

                // 将请求添加到请求队列中
                requestQueue.add(stringRequest);
            }
        });

                3)请求json数据

        // 请求json数据
        bt_volley_json.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 创建一个请求队列
                RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this);

                // 网络数据地址
                String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";

                // 创建一个json请求
                JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject jsonObject) {
                        // 设置显示结果
                        tv_volley_result.setText(jsonObject.toString());
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        tv_volley_result.setText("失败"+volleyError.toString());
                    }
                });

                // 将json请求添加到请求队列中
                requestQueue.add(jsonObjectRequest);
            }
        });

        2.图片加载

                1)ImageRequest加载图片

        // ImageRequest加载图片
        bt_volley_image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 创建一个请求队列
                RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this);

                // 网络图片地址
                String url = "http://img5.mtime.cn/mg/2016/10/11/160347.30270341.jpg";

                // 创建一个图片请求
                ImageRequest imageRequest = new ImageRequest(url, new Response.Listener<Bitmap>() {
                    @Override
                    public void onResponse(Bitmap bitmap) {
                        iv_volley.setImageBitmap(bitmap);
                    }
                }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        iv_volley.setImageResource(R.drawable.atguigu_logo);
                    }
                });

                // 将图片请求添加到请求队列中
                requestQueue.add(imageRequest);
            }
        });

                2)ImageLoader加载图片

        // ImageLoader加载图片
        bt_volley_imageloader.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 创建一个请求队列
                RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this);

                // 创建一个带缓存的ImageLoader
                ImageLoader imageLoader = new ImageLoader(requestQueue, new BitmapCache());

                // 获取图片的监听:参数1:用于显示图片的ImageView控件;参数2:加载图片的过程中显示的图片
                // 参数3:加载图片失败的情况下显示的图片
                ImageLoader.ImageListener imageListener = imageLoader.getImageListener(iv_volley, R.drawable.atguigu_logo, R.drawable.atguigu_logo);

                // 网络图片地址
                String url = "http://img5.mtime.cn/mg/2016/10/11/160347.30270341.jpg";

                // 加载图片
                imageLoader.get(url, imageListener);
            }
        });
/**
 * 缓存类
 */
public class BitmapCache implements ImageLoader.ImageCache {
    private LruCache<String, Bitmap> mCache;

    public BitmapCache() {
        int maxSize = 10 * 1024 * 1024;
        mCache = new LruCache<String, Bitmap>(maxSize) {
            @Override
            protected int sizeOf(String key, Bitmap bitmap) {
                return bitmap.getRowBytes() * bitmap.getHeight();
            }
        };
    }

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

    @Override
    public void putBitmap(String url, Bitmap bitmap) {
        mCache.put(url, bitmap);
    }
}

              3)NetworkImageView加载图片

         // networkimageview显示图片
        bt_volley_networkimageview.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 创建一个请求队列
                RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this);

                // 创建一个带缓存的ImageLoader
                ImageLoader imageLoader = new ImageLoader(requestQueue, new BitmapCache());

                // 设置默认图片
                iv_volley_network.setDefaultImageResId(R.drawable.atguigu_logo);

                // 设置请求失败后的图片
                iv_volley_network.setErrorImageResId(R.drawable.atguigu_logo);
                String url = "http://img5.mtime.cn/mg/2016/10/11/160347.30270341.jpg";

                // 设置显示的图片
                iv_volley_network.setImageUrl(url, imageLoader);
            }
        });

  看到此,是不是接的EventBus的简单使用是不是很简单,谢谢浏览!

     

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Android网络框架的封装,有许多不同的选择。以下是一些常见的网络框架和封装方法: 1. VolleyVolley是Google推出的用于Android应用程序的网络通信库。它使用简单且易于集成,具有高效的网络请求队列和缓存机制。你可以封装Volley以满足你的特定需求,例如添加身份验证、错误处理或数据解析等功能。 2. OkHttp:OkHttp是一个开源的HTTP客户端库,可用于Android应用程序中的网络通信。它提供了简单易用的API,支持同步和异步请求,并具有连接池和缓存等功能。你可以使用OkHttp封装网络请求,自定义拦截器和事件监听器,以及处理各类错误和异常情况。 3. Retrofit:Retrofit是Square公司开发的一个类型安全的RESTful网络请求库。它基于OkHttp,并提供了简洁的注解接口来定义API请求。你可以封装Retrofit以定义你的API接口和请求参数,并处理响应结果、错误情况和数据解析等。 4. 自定义封装:除了使用现有的网络框架,你还可以根据你的需求自定义封装一个网络库。这种方式可以灵活地满足特定的业务需求。你可以使用Java的URLConnection或Apache HttpClient等原生库进行底层网络通信,并自定义请求、解析和错误处理等逻辑。 在封装网络框架时,你可以考虑以下几点: - 封装请求方法(GET、POST等)和参数(URL、请求头、请求体等)的接口。 - 统一处理错误和异常情况,例如网络连接失败、超时、服务器错误等。 - 可选地处理数据解析和转换,例如使用Gson库将JSON数据转换为Java对象。 - 支持并发请求和线程管理,以避免阻塞主线程。 - 可选地添加缓存机制,以减少重复请求和提高性能。 - 可选地添加身份验证和安全机制,以保护数据的传输和存储安全。 以上是一些常见的Android网络框架封装方法,你可以根据具体需求选择适合你项目的框架或自定义封装。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值