수색…


비고

반복적 인 리소스로드로 인해 원활한 앱 동작에 영향을주는 애플리케이션에서는 Lru Cache를 사용해야합니다. 예를 들어 큰 축소판 그림이있는 사진 갤러리 (128x128).

너무 높게 설정하면 앱에 영향을 미칠 수 있으므로 Lru 캐시의 크기는 항상주의해야합니다.

Lru 캐시가 더 이상 유용하지 않으면 가비지 콜렉터가 메모리에서이를 정리할 수 있도록 Lru 캐시에 대한 참조를 보관하지 마십시오.

최상의 성능을 위해 Lru 캐시에 추가하기 전에 적절한 inSampleSize를 선택하는 것과 같은 우수 사례를 사용하여 비트 맵과 같은 리소스를로드해야합니다.

캐시 초기화

Lru 캐시는 메모리 한계에 도달 할 때까지 빠른 액세스를 위해 추가 된 모든 자원 (값)을 저장합니다.이 경우, 사용량이 적은 자원 (값)을 저장하여 새 자원을 저장합니다.

Lru 캐시를 초기화하려면 최대 메모리 값을 제공해야합니다. 이 값은 응용 프로그램 요구 사항과 원활한 응용 프로그램 사용을 유지하는 데 리소스가 얼마나 중요한지에 따라 다릅니다. 예를 들어 이미지 갤러리의 권장 값은 사용 가능한 최대 메모리의 1/8입니다.

또한 Lru 캐시는 키 - 값 기반으로 작동합니다. 다음 예제에서 키는 String 이고 값은 Bitmap .

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

LruCache<String, Bitmap> = memoryCache = new LruCache<String, Bitmap>(cacheSize) {
    protected int sizeOf(String key, Bitmap bitmap) {
        return bitmap.getByteCount();
    }
};

캐시에 비트 맵 (자원) 추가

캐시에 자원을 추가하려면 키와 자원을 제공해야합니다. 먼저 값이 캐시에 없는지 확인하십시오.

public void addResourceToMemoryCache(String key, Bitmap resource) {
    if (memoryCache.get(key) == null)
        memoryCache.put(key, resource);
}

캐시에서 비트 맵 얻기 (Resouce)

캐시에서 리소스를 가져 오려면 리소스의 키 (이 예제에서는 String)를 전달하기 만하면됩니다.

public Bitmap getResourceFromMemoryCache(String key) {
    memoryCache.get(key);
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow