안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요,
메모리 관리 문제로 머리 엄청 아프네요..
이미지가 많이 표시되는 어플로 기본 구현은 갤러리뷰를 이용해서 전체화면에 한 이미지를 띄우고
그 위에 리스트뷰(썸네일이미지)와 각종 설명, 링크 버튼 등이 추가되어 있습니다.
갤러리뷰를 이용했으니 좌/우 플링 시 마다 다른 이미지가 나오고 (역시 리스트뷰나 각종 버튼등이 포함된)
링크버튼중 지도를 보여주는 mapview 와 웹페이지 링크를 보여주는 webview 등도 있으며 때론 서버에서 이미지를 받아서
보여주기도 합니다.
대략적인 개발중인 어플 설명이었습니다. ^^;
Activity 는 MainActivity 하나에서만 동작하고 Activity 간 이동은 없습니다. Activity 하나에서 뷰만 여러개 띄워서 표현합니다.
여기서 어플 실행을 하면 첨부 그림처럼 Heap Size 6.695MB, Allocated 3.308 MB 로 시작이 됩니다. (첨부이미지파일)
메모리를 좀 줄이고자 이리저리 해보다 리스트뷰를 선택할때 어탭터 바인딩 시키고 해도 역시 보여질때는
메모리가 올라가니.. 여기서 지도보기를 들어가거나 다른 이미지로 변경을 몇번 하다보면 공포의 OutOfMemoryError....
Bitmap 을 recycle 하기 위해서 참조변수 두고 이리저리 해보려고 해도 갤러리뷰에서 convertView 가 재사용이 안되고
플링으로 이미지를 넘기다 보면 어느시점에 이전 뷰가 없어지는지도 알아내기 어려워서 Bitmap recycle 는 도무지
적용할 부분을 못찾겠습니다.
대략적인 설명이었는데 아직 안드로이드 개발한지 2달 정도 되가는 초짜라 뭔가 잘못된 방향으로 개발중인건 아닌가
하는 생각이 드네요..
그리고 화면에 표현되지 않는 뷰(숨겨둔)를 보여주고 난 다음 숨길때 뭔가 리소스를 반환하거나 뷰 자체를 제거하고 다시
만드는게 더 좋을까요?
해결 방향을 못찾겠습니다. 메모리 관리 관련해서 뭔가 도움될만한 조언 부탁드립니다.
감사합니다.



