final int maxMemory = (int) (Runtime.getRuntime().maxMemory()/1024);
final int cacheSize = maxMemory/8;
mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
@Override
protected int sizeOf(String key, Bitmap bitmap) {
// The cache size will be measured in kilobytes rather than
// number of items.
return bitmap.getByteCount()/1024;
}
};
URL url = new URL("http://s2.goodfon.ru/image/260463-1920x1200.jpg");
Bitmap bitmap = BitmapFactory.decodeStream((InputStream) url.getContent(), null, options);
if(bitmap != null)
Log.i("Success", "BITMAP IS NOT NULL");
String key = "myKey";
Log.i("Get is null", "putting myKey");
mMemoryCache.put(key, bitmap);
Bitmap newBitmap = mMemoryCache.get(key);
if(newBitmap == null)
Log.i("newBitmap", "is null");
こんにちは、ここにコードがあります。私はURLからビットマップを正常に取得します(ログはビットマップがヌルではなく、簡単に表示できます)。それから私はそれをLruCacheに入れてそれを元に戻そうとしていますが、それはnullを返します。 (ログによると、newBitmapはnullです)。私のミスはどこですか?教えてください。 Android 4.1.2キャッシュサイズ8192 Kb。LruCacheが機能しない
キャッシュサイズの計算が正しいことを試してみましたか? 'sizeOf()'は何を出力しますか?イメージが本当にキャッシュの内側にあるのは確かですか? – ConcurrentHashMap
http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html – Raghunandan
ああ、その画像は9000 kbで、私はファイルとして1.19 MBと思っていました。問題が解決しました。ありがとうございました。なぜ、1.19 MBのファイルがgetByteCount/1024で9000 kbを返すのですか? – Faceles