私はこのキャッシュは、あなたのアプリケーションのすべての生命の間に利用可能であることを行っているので、シングルトンのビットマップキャッシュを使用しているお勧めします。
public class BitmapCache implements ImageCache {
private LruCache<String, Bitmap> mMemoryCache;
private static BitmapCache mInstance;
private BitmapCache(Context ctx) {
final int memClass = ((ActivityManager) ctx
.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();
// Use 1/16th of the available memory for this memory cache.
final int cacheSize = 1024 * 1024 * memClass/16;
mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getRowBytes() * value.getHeight();
}
};
}
public static BitmapCache getInstance(Context ctx) {
if (mInstance == null) {
mInstance = new BitmapCache(ctx);
}
return mInstance;
}
@Override
public Bitmap getBitmap(String url) {
return mMemoryCache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
mMemoryCache.put(url, bitmap);
}
}
おかげで多くのことを処理する新しいAPIで提供されます、ところで、どのようにあなたのキャッシュの適切なサイズを決定するのですか?彼はスクリーンサイズの関数が論理的だと話していますが、もっと正確にするにはどうすればいいですか? – urSus
@Vlasto Benny Lava、わかりませんが、 'N * screen_width * screen_height'と' N〜10'のようなものが論理的に見えます。 –
何が起きるかはうまくいきますが、画面が消えて戻ってくるとイメージが再び読み込まれるので、メモリキャッシュから追い出されたと思いますか?それが何であるか、どんな考えですか? – urSus