我正在使用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的适配器需要知道我有多少页面,这将是我的缓存中的对象数量。
关于我如何做到的任何想法?谢谢!
答案 0 :(得分:1)
我认为你应该重新考虑你的方法。通常,当您使用某种分页(我的意思是数据分页,而不是ViewPager)时,您首先要向适配器添加一定数量的项目。您可以立即开始下载所需的资源,也可以等到真正需要它们。如果资源已下载并缓存,请检入Adapter.onCreateView()
。如果是,请从那里获取,如果没有,请启动异步下载并在获得后立即将图像添加到视图中。在此期间显示占位符。
当您到达适配器中的最后一项时,向其添加另一批,一切都重新开始。
如果您真的想知道LRUCache中有哪些项目,请覆盖put()
和entryRemoved()
。在那里,您可以了解从缓存中添加或逐出的项目。我会建议反对这种方法。