android - JakeWharton 的 DiskLruCache - 如何使用 Volley 实现?

标签 android android-volley image-caching

这与 this 有关关于 Volley 图像缓存的问题。所以,现在我想实现 DiskLruCache,但我不确定该怎么做。

我从 github 下载了 Jar 文件并将其添加到我的项目中。

接下来我该做什么?如何更改 Volley 现有代码并集成 DiskLruCache?

现有代码:

初始化 Volley:

queue = Volley.newRequestQueue(getActivity());
imageLoader = new ImageLoader(queue, new ImageLoader.ImageCache() {
    private final LruCache<String, Bitmap> mCache = new LruCache<String, Bitmap>(
            10);

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

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

从服务器获取响应并解析:

jsArrayRequest = new JsonArrayRequest(url,
        new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                if (Const.DEBUGGING) {
                    Log.d(Const.DEBUG,
                            "Response => " + response.toString());
                    Log.d(Const.DEBUG, "Length = " + response.length());
                }
                parseResponse(response, url);

                setRetrivalSuccess();
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                if (Const.DEBUGGING) {
                    Log.d(Const.DEBUG, "Volley Error");
                    Log.d(Const.DEBUG, "Error = " + error.toString());
                }

                ((MainFragmentActivity) getActivity())
                        .setSupportProgressBarIndeterminateVisibility(false);

            }
        });
queue.add(jsArrayRequest);

我在 SO 上看过几个例子,但我不明白如何将 Volley 与 DiskLruCache 链接起来。

最佳答案

ImageLoader 需要一个 ImageCache,要使用 DiskLruCache,您必须在它上面有一个实现 ImageCache 的包装器。 VolleyImageCacheExample (推荐的做法是使用基本内存LRU缓存作为L1缓存,磁盘缓存作为L2)

关于android - JakeWharton 的 DiskLruCache - 如何使用 Volley 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21872028/

相关文章:

android - Android Studio 4.0.1,Gradle和React Native:存在时找不到AndroidManifest.XML

android - NDK 中出现 'LOGE' was not returned in thisscope 错误

java - 使用 JSON Parsing with volley 更新 ListView 的最佳方法

android - 使用 android volley 发出 HTTPS 请求

android - android中的异步图像列表和缓存

javascript - 如何将缓存图像显示到html div对象中

Swift 2 Parse 和 KingFisher 缓存图像

android - SetError 在 TextInputLayout 中使用自定义样式产生异常

android - Android 和 App Engine 实际上是如何通信的?

android - 带 Volley 的 HTTP 发布 --- XML 发布,JSON 响应