7
    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 からビットマップを正常に取得しました (ログには Bitmap が null ではなく、簡単に表示できると書かれています)。次に、それを LruCache に入れて取り戻そうとしていますが、null が返されます。(ログには、newBitmap が null であると記録されています)。私の間違いはどこですか?教えてください。Android 4.1.2 キャッシュ サイズ 8192 KB。

4

3 に答える 3

0

lrucache からポップアウトしたビットマップをリサイクルすることもできます

final Bitmap bmp = mLruCache.put(key, data);
if (bmp != null)
    bmp.recycle();
于 2013-10-04T15:14:08.220 に答える