为什么我们在android中为自定义LRUCache划分1024

时间:2016-07-04 21:50:58

标签: android caching byte

final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);

final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024 / 8);

我必须将maxMemory除以1024.此外,为什么再将它除以8.我已经看过它在教程中做了两种方式我已经看过编写自定义LRUCache但我不知道#39;了解其含义?

1 个答案:

答案 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的大小。