안드로이드 이미지 캐쉬하기

프로그래밍/Android 2013. 8. 30. 20:51

안드로이드 이미지 캐쉬하기


이미지 캐쉬하는 것은 그렇게 어렵지 않습니다. 기본적으로 Cache 클래스를 제공해주기 때문에 사용자는 HashMap 처럼 넣고 빼고 하면서 자연스럽게 사용하면 됩니다.

제공되는 Cache 클래스는 메모리 캐쉬는 LruCache, 디스크 캐쉬는 DiskLruCache 입니다.


메모리 캐쉬를 사용하여 이미지를 캐쉬해보자


// 캐쉬 변수 설정

private LruCache<String, Bitmap> mMemoryCache;


@Override

protected void onCreate( Bundle savedInstanceState){

// 캐쉬의 기본 단위는 킬로바이트 입니다. 

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

final int cacheSize = maxMemory / 8;

        // 캐쉬를 생성합니다. cacheSize 는 이 메모리 캐쉬의 사이즈입니다.(단위 킬로바이트)

        // sizeOf 함수는 구현해야 합니다. 캐쉬하려는 객체의 사이즈를 리턴하는 함수. 캐쉬 남은용량과 캐쉬하려는 객체의 용량을 비교하기 위해서 사용되는것 같습니다.

mMemoryCache = new LruCache<String, Bitmap>( cacheSize){

@Override

protected int sizeOf( String key, Bitmap bitmap){

return bitmap.getByteCount() / 1024;

}

};

}


// 이미지 캐쉬 하기

public void addBitmapToMemoryCache( String key, Bitmap bitmap){

if( getBitmapFromMemCache( key) == null){

mMemoryCache.put( key, bitmap);

}

}


// 캐쉬된 이미지 가져오기

public Bitmap getBitmapFromMemCache( String key){

return mMemoryCache.get( key);

}


: