1

안드로이드 많은 이미지로드 라이브러리 (예 : Picasso - 디스크 캐시 용으로 2 %의 스토리지를 사용하는 Glide)는 메모리 lru 캐시 외에 디스크 캐시를 사용합니다. 이것이 메모리에서 다운로드 된 이미지에 유용 할 수있는 이유를 이해할 수 있습니다. 메모리 캐시가 꽉 찼 으면 원격으로 가져 오는 대신 디스크에서 읽어서 네트워크 대기 시간을 피하십시오. 그러나 로컬 이미지를 읽는 중이라면 안드로이드 장치 자체에서 - 직렬화 된 비트 맵 데이터와 별도의 디스크 캐시를 사용하여 데이터를 얻을 수 있습니까? 데이터는 디스크에서 읽어야하기 때문에? 앱에 미리보기 이미지가 필요하고 원래 이미지를 한 번 서브 샘플링하여 캐시에 저장한다면 어떨까요? 퍼포먼스를 보여주는 연구가 있습니까? googles samples 및 기타 bitmap cache 라이브러리에서 디스크 캐시를 사용하는 것을 보았습니다.안드로이드의 비트 맵 (및 기타) 용 DiskLRUCache

+0

멋진 주제. 장치에서 미리보기 이미지를로드 할 때 OutOfMemory 문제가 발생했습니다. 이미지를 처리 ​​할 때 항상 글라이드 또는 Picasso를 사용하지만 큰 이미지를 처리 ​​할 때 PicCasso에서주의해야합니다. 생각에 대해 더 많은 지식을 가진 사람이 대답 할 수 있다면 좋을 것입니다. –

답변

0

그래서 여기 내가 AOSP docs에서 발견 된 일부 심판은 다음과 같습니다

메모리 캐시는 최근 비트 맵을 볼에 액세스 속도를 향상에 유용하지만이 캐시에있는 이미지에 의존 할 수 없다. 더 큰 데이터 세트를 가진 GridView와 같은 구성 요소는 쉽게 메모리 캐시에 을 채울 수 있습니다. 응용 프로그램이 전화와 같은 또 다른 작업으로 중단 될 수 있으며 백그라운드에서 백그라운드로 잠길 경우 이 사망하고 메모리 캐시가 삭제 될 수 있습니다. 사용자가 다시 시작하면 응용 프로그램에서 각 이미지를 다시 처리해야합니다.

이러한 경우 디스크 캐시를 사용하여 처리 된 비트 맵 을 유지하고 이미지를 더 이상 사용할 수없는 로딩 시간을 줄일 수 있습니다. 메모리 캐시에 저장합니다. 물론 디스크에서 이미지를 가져 오는 것은 메모리에서로드하는 것보다 느리며 디스크의 읽기 시간이 예측할 수 없으므로 백그라운드 스레드에서 수행해야합니다.