Android框架之volley的使用

Volley是一款由Google发布的Android平台网络通信库,适用于数据量不大但通信频繁的应用场景。它支持自动调度网络请求、高并发连接及透明缓存等功能,并提供了调试与追踪工具。

Volley

Volley的中文翻译为“齐射、并发”,是在2013年的Google大会上发布的一款Android平台网络通信库,具有网络请求的处理、
 小图片的异步加载和缓存等功能,能够帮助 Android APP 更方便地执行网络操作,而且更快速高效。
 Volley特别适合数据量不大但是通信频繁的场景                

Volley 有如下的优点:
    自动调度网络请求;
    高并发网络连接;
    通过标准的 HTTP cache coherence(高速缓存一致性)缓存磁盘和内存透明的响应;
    支持指定请求的优先级;
    网络请求cancel机制。我们可以取消单个请求,或者指定取消请求队列中的一个区域;
    框架容易被定制,例如,定制重试或者回退功能;
    包含了调试与追踪工具;
    Volley 不适合用来下载大的数据文件。因为 Volley 会保持在解析的过程中所有的响应。对于下载大量的数据操作,请考虑使用 DownloadManager    


实现思路:


                            将请求添加到请求对列(mian Thread) 

                                        |
                                        |
                     添加到缓存详情,进行缓存内容查找 (缓存线程)

                          |                         |
                         是(有内容)               否(没有内容)
                          |                         |
                          |                         |
                读取缓存的内容(缓存线程)           |
                          |                    开启网络请求(网络请求线程)
                          |                         |
                数据返回给主线的回调方法(主线程)   |
                          |                         |
                          |                 将数据添加到缓存中(网络线程) 
                          |                         |
                          --------------------------|                           

RequestQueue 请求对列

    1. 获取系统默认的请求对列 

       Volley.newRequestQueue(this)
       默认缓存路径:File cacheDir = new File(context.getCacheDir(), DEFAULT_CACHE_DIR);  data/data/包名/cache/volley

       当当前Api >= 9  网络加载使用 HttpUrlConnection
                 <9    AndroidHttpClient

    2.自定义请求队列 修改缓存的路径


      /**
     * 参数1:File 缓存所在的文件夹  指定缓存路径
     * 参数2: 指定缓存容量的大小
     */

    File  file = new File(Environment.getExternalStorageDirectory(),"volleyxx");
    if (!file.exists()){
        file.mkdirs(); //创建缓存的文件夹  sdcard/volleyxx
    }

    Cache cache = new DiskBasedCache(file,100*1024*1024);

    /**
     * HurlStack       HttpUrlConnection
     * HttpClientStack  HttpClient
     */
    Network network = new BasicNetwork(new HurlStack());
    /**
     * 1.缓存部分
     * 2.网络部分
     */
    requestQueue = new RequestQueue(cache,network);

    //最后一定要调用start
    requestQueue.start();



Request 请求 

    Request 
          1.使用Volley自带的请求
           StringRequest 返回的结果是 String  重点
           JsonArrayRequest 返回的结果 JSONArray  
           JSONObjectRequest 返回的就是 JSONObject   返回的结果必须是JSONArray或者JSONObject

          2.自定义请求返回对应的实体类类型

            希望返回的数据 直接是GSON插件解析的实体类对象!

RequestQueue.add(Request) 开启一个请求 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值