final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
和
final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024 / 8);
我必须将maxMemory除以1024.此外,为什么再将它除以8.我已经看过它在教程中做了两种方式我已经看过编写自定义LRUCache但我不知道#39;了解其含义?
答案 0 :(得分:1)
我必须将maxMemory除以1024
您无需将任何内容划分为LRUCache
。
您做需要的是maxSize
传递给LRUCache
构造函数的单位与您在sizeOf()
方法中使用的单位相同
例如,以下是LRUCache
代码的示例位,取自the JavaDocs:
int cacheSize = 4 * 1024 * 1024; // 4MiB
LruCache<String, Bitmap> bitmapCache = new LruCache<String, Bitmap>(cacheSize) {
protected int sizeOf(String key, Bitmap value) {
return value.getByteCount();
}
}
这里,大小的单位是一个字节。因此,注释表明它们传递了代表4MiB的多个字节,sizeOf()
以字节为单位返回Bitmap
的大小。