2012-08-07 1 views
3

ImageView가있는 ViewPager를 자식보기로 사용하고 있습니다. ImageView는 LarCache 기반 클래스 (Android 지원 라이브러리)로 구현 된 네트워크 및/또는 캐시 된 로컬 캐시로로드 된 비트 맵을 표시합니다. 문제는 이미지가 LruCache에서 제거 될 때 GC가 너무 늦게 비트 맵 메모리를 해제하거나 릴리스하지 않는 것입니다. 예전의 비트 맵이 LruCache와 ViewPager의 ImageViews에서 제거 되더라도 네트워크/디스크에서 새로운 비트 맵을로드하는 중에 예외 OutOfMemory가 자주 발생합니다 (ViewPager에서 뷰를 제거했습니다). Bitmap.recycle (Android 3.0 이전)을 호출해야하지만 가끔씩 (?) 읽지 만 작동하지 않습니다. 또한 ICS에서 작동하지 않습니다 (Bitmap.recycle을 호출하지 않습니다). 이 문제를 해결하는 방법?android ViewPager 문제의 비트 맵 캐싱

답변

0

가비지 수집기가 무언가를 계속 참조하고 있다면 비트 맵을 재활용하지 않습니다. ImageViews가 비트 맵에 매달려 있다고 생각합니다. ViewPager는 뷰를 재활용하지 않으므로 표시되지 않을 때 ImageView를 지울 필요가 있습니다.

0

비트 맵을 효율적으로 표시하는 방법에 대해서는 site의 Android 개발자 BitmapFun 샘플을 참조하십시오. 이 샘플에는 이미 앱을 빌드 할 때 참조 할 수있는 이미지의 GridView 및 ViewPager가 있습니다. 비록 샘플에 약간의 캐싱이 있습니다. issue. 당신은 here을 확인할 수 있습니다.

0

문제는 많은 이미지를 처리하지 못합니다. 즉, 활동이 파괴되면 이미지가 할당 취소되지 않는 것입니다.

이것이 코드를 보지 않고 말하는 이유는 어렵습니다. 그러나이 도움말에는 도움이 될만한 몇 가지 도움말이 있습니다.

http://blog.booking.com/android-reuse-bitmaps.html