Volley 使用笔记

标签: volley 笔记 | 发表时间:2013-11-22 11:28 | 作者:
出处:http://www.gracecode.com

Google I/O 2013 上就讲到了 Volley。当时并没还有在意这个类库,直到看了某项目的源代码后,发现这个东西值得推荐。

Volley 这个库的官方介绍是:

  Volley is a library that makes networking for Android apps
easier and most importantly, faster.

不是很严谨的讲,Volley 就是个包含了很多封装功能的网络请求工具类。使用这个工具类有个优势就是可以节省很多在请求以及缓存方面的开发时间。

优势

相比其他网络载入类库,Volley 的优势官方主要提到如下几点:

  1. 队列网络请求,并自动合理安排何时去请求。
  2. 提供了默认的磁盘和内存等缓存(Disk Caching & Memory Caching)选项。
  3. Volley 可以做到高度自定义,它能做到的不仅仅是缓存图片等资源。
  4. Volley 相比其他的类库更方便调试和跟踪。

基本使用

引入 Volley 很简单。使用 git 下载代码到本地

  git clone https://android.googlesource.com/platform/frameworks/volley

然后引入到项目中就可以使用了。

Volley 简单的来讲主要由两个类控制:

  1. Request Queue
  2. Request

Volley 的「Hello,World」示例代码:

  // 实例化 Request Queue
RequestQueue queue = Volley.newRequestQueue(context);

// 实例化 Request
String url = "<remote url>";
JsonObjectRequest jsonObjRequest =
    new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {

        @Override
        public void onResponse(JSONObject response) {
            // ...
        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            // ...

        }
    });

然后剩下要做的事情就是把这个 Request 扔到 Queue 里面即可:

  queue.add(jsonObjRequest);

缓存图片资源

缓存图片资源 Volley 提供了个自定义的 NetworkImageView 继承自 ImageView 。它的优势就是载入远程图片几乎可以用「傻瓜」形容,例如:

  mNetworkImageView.setImageUrl(imageUrl, new ImageLoader());

其中 ImageLoader 最重要的一个参数就是 ImageLoader.ImageCache 它控制是否需要请求网络获取数据。因此,我们可以将这个 Class 配合 LruCache 以及 DiskLruCache 用来内存和磁盘缓存。

主要方法

  @Override
public Bitmap getBitmap(String url) {
    Bitmap data = mLruCache.get(url);
    if (data == null) {
        try {
            data = mDiskLruCache.get(key);
            if (data != null) {
                mLruCache.put(key, data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    } 

    return data;
}

这样子,就可以很清晰得把内存缓存和磁盘缓存之间的关系建立和链接起来了。

资源&参考

- eof -

相关 [volley 笔记] 推荐:

Volley 使用笔记

- - 無標題文檔
Google I/O 2013 上就讲到了 Volley. 当时并没还有在意这个类库,直到看了某项目的源代码后,发现这个东西值得推荐. Volley 这个库的官方介绍是:. 不是很严谨的讲,Volley 就是个包含了很多封装功能的网络请求工具类. 使用这个工具类有个优势就是可以节省很多在请求以及缓存方面的开发时间.

笔记

- 毛毛 - 游戏人生
我关于写代码的一些琐碎的看法. 之前没有把 Paul Graham 的 <黑客与画家> 一书读完, 上周就从同事那里把书带回家, 也一直没读, 到这周才有时间读完. 很久没有更新了 (一看时间, 整整 5 个月), 顺便把这篇写了几个月的感想放出来.. 这本书前面 8 章讲述的内容, 大多是我并不太感兴趣的, 比如财富, 比如创业.

Textmate笔记

- Sean Lee - Reborn
过去在Windows上还真的没有怎么太在意文本编辑器(也跟自己不是职业程序员有点关系吧. ),近来常在Mac上使用Textmate,真觉得一款好的文本编辑器实在非常必要. Textmate售价$58,很多人觉得贵,不过它真的不错. 为Finder加上“Open in textmate”按钮. 作者Henrik的主页上有详细的介绍.

OSX 笔记

- - C++博客-首页原创精华区
在vbox中安装10.7的方法:. 首先使用OS_X_Lion.iso.torrent下载操作系统的iso文件. 直接使用OS_X_Lion.iso安装,安装完之后使用HJMac.iso进行启动. 在win7 64bit上通过,但是在linux上没有通过. 升级,可以把10.7升级为10.7.4,方法是去苹果官方 http://support.apple.com/downloads 网站下载:.

笔记--redis

- - 移动开发 - ITeye博客
接着准备面试内容,今天学习了下redis,继续我的笔记加深印象. 1.为什么要使用redis.  答:主要是 性能和 并发两个方面,另外redis也可以做分布式锁和消息队列等其他功能. 但是如果只是为了分布式锁这些其他功能,完全还有其他中间件(如zookpeer等)代替,并不是非要使用redis.

云笔记:跨平台笔记服务

- one dollar - 天涯海阁-Web2.0Share
云笔记是一款跨平台的笔记服务,目前提供了Android、iPhone、iPad客户端(FIT写字板、FIT Paper). 最早知道云笔记也是因为一直使用FIT写字板,发现FIT写字板更新之后支持了云同步,才发现了云笔记. 云笔记是新点科技旗下的产品,相信Mac用户都会知道FIT输入法,Mac和iOS上面很棒的输入法应用.

小岛笔记 Day1

- Qian - 吃素菜,彼此相爱。
去巴厘岛之前,我们对旅行进行了明确分工,我负责研究攻略. 我特意买了09年版的孤独星球,像小学生一样注了注,贴了几溜彩色便签. 临行前,我被各种词条式的信息膨胀着,能在10秒内,标出7座海神庙9座指示方位神庙的地图方位. 状态好时,能说出哪家餐馆在哪页地图的横几格竖几格. 包哥最怕坐飞机,又贵看着又不安全的事儿,有悖他的人生信条.

笔记本爱经

- Yuheng Kuang - 煎蛋
oioi:sein已经回家过年 :|. 名为KamaSutra(爱经)Lap,看看你与笔记本最亲近的姿势会是怎样 :) link. 老实说大部分时间,这玩意并没有让我感觉舒服. © oioi for 煎蛋 / 20回复 / 投稿 / 图片托管于又拍网. geek:极客2011日历(图集). 数码看新鲜:Dell 旋转屏幕笔记本.

shell 学习笔记

- tiger - 游戏人生
将脚本目录加到 PATH 中. 在 dash 中如何进行字符串替换. 将 rst 格式文档转换为 blog 可用的 html 代码. shell 脚本虽然不是非常复杂的程序, 但对于首次接触的我来讲, 多少还是有些忌惮. 不过, 接触任何新事物都需要勇敢面对, 逐步树立信心. 我是冲着把脚本写好去的, 所以, 我的目标是能够写出友好, 健壮, 优美的脚本..

OAuth学习笔记

- 宋大妈 - FeedzShare
来自: 标点符 - FeedzShare  . 发布时间:2011年08月29日,  已有 2 人推荐. OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据.