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


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

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

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

도와주세요!


  • 애초에 액티비티를 겹겹이 쌓는 행위 자체가 메모리 누수를 유발합니다.    k971119   2016.4.11 23:47     
  • activity를 왜 겹겹히 쌓나요? 다른 액티비티를 실행하고 이전 액티비티를 finish시키면 안되는건가요?    송주연   2016.4.12 14:32     
  • 사용자가 뒤로가기 할 때 화면 히스토리를 기억하기 원합니다. 그래서 일정 개수 이상이 되면 뒷단의 액티비티를 finish() 하고, 뒤로가기 할 때 create() 하는 방식을 생각하고 있지만 만족스럽지가 않습니다...    Buseol Sin   2016.4.12 14:36     
조회수 405


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close