마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Glide를 쓰고, 액티비티 스택이 깊어지면 OOM이 발생합니다.

0 추천
Glide를 사용하고 있습니다. 이미지 로딩이 많은 편입니다. 화면에서 화면으로 계속 쌓아가는 구조입니다. 그러다보니 메모리가 쌓여서 끝끝내 OOM이 발생해서 앱이 죽고 맙니다. 백스택에 있는 액티비티들의 이미지 리소스를 해제하는 방법이 없을까요?

앞에 세 개 정도의 액티비티는 건드리지 않고, 그 뒤부터 쌓여있는 액티비티들의 이미지 리소스를 해제해서 메모리를 최대한 아끼고 싶습니다. 그리고 백버튼을 눌러 리소스를 해제했던 액티비티로 돌아오면 이미지만 리로딩 시키려고 합니다.

지금까지 시도해본 방법은 아래와 같습니다. 모두 실패했습니다. 액티비티를 제거하지 않는 이상 메모리가 해제되지 않는 것 같습니다. ImageView.setImageResource(null) ImageView.setImageBitmap(null) ImageView.setImageUri(null) Glide.get(Context).clearMemory() Glide.get(Context).clearDiskCache()

도와주세요!
익명사용자 님이 2016년 4월 14일 질문

1개의 답변

+1 추천

1. 캐시 사이즈를 올린다.

2. 라지힙을 사용한다.

3. Fresco 라이브러리를 사용한다.

개인적으로 가벼운 이미지를 불러올 때에는 Picasso나 Glide를 사용하고 무거운 이미지 및 이미지프로세싱에는 Fresco를 사용하고 있습니다. OOM 이슈를 획기적으로 해결한 Fresco 라이브러리를 사용해보시는 것도 좋을 것 같습니다.

Fresco : http://frescolib.org 

블럭 (1,700 포인트) 님이 2016년 4월 15일 답변
...