Android:跟踪缓存中的对象数量

时间:2013-11-27 18:34:30

标签: android size android-lru-cache

我正在使用ViewPager构建一个库。每次下载照片时,我都会立即将其缓存在mMemoryCache

mMemoryCache = new LruCache<Integer, Bitmap>(cacheSize) {
        @Override
        protected int sizeOf(Integer key, Bitmap bitmap) {
            // The cache size will be measured in bytes rather than number
            // of items.
            return (bitmap.getRowBytes() * bitmap.getHeight());
        }
    };

正如您所看到的,sizeOf()返回使用字节的数字,这是有意义的。我的问题是我的ViewPager的适配器需要知道我有多少页面,这将是我的缓存中的对象数量。

关于我如何做到的任何想法?谢谢!

1 个答案:

答案 0 :(得分:1)

我认为你应该重新考虑你的方法。通常,当您使用某种分页(我的意思是数据分页,而不是ViewPager)时,您首先要向适配器添加一定数量的项目。您可以立即开始下载所需的资源,也可以等到真正需要它们。如果资源已下载并缓存,请检入Adapter.onCreateView()。如果是,请从那里获取,如果没有,请启动异步下载并在获得后立即将图像添加到视图中。在此期间显示占位符。

当您到达适配器中的最后一项时,向其添加另一批,一切都重新开始。

如果您真的想知道LRUCache中有哪些项目,请覆盖put()entryRemoved()。在那里,您可以了解从缓存中添加或逐出的项目。我会建议反对这种方法。