안드로이드 개발 질문/답변
(글 수 45,052)
개발을 하다 문득 궁금한게 생겨서 질문 드려요.
=============================
첫번째 질문
예를들어 300x300의 뷰에 배경을 설정한다고 했을때,
1. 300x300의 뷰에 res/drawable로부터 이미지를 불러와 배경으로 설정
2. 300x300의 뷰에 onDraw에서 직접 그려서 배경으로 설정.
3. 300x300의 이미지뷰에 서버로부터 받은 bitmap을 설정.
이 세가지 경우 각각 메모리를 얼마나 사용할까요?
1,3번의 경우 300x300x4byte 의 메모리를 사용하여 똑같은걸로 알고있는데 맞나요?ㅎ
그런데 2번의 경우 어떨까요?
=============================
두번째 질문
Activity를 관리할때 onDestroy에서
이미지뷰에서 사용된 비트맵을 모두 recycle시키는데
일반 레이아웃이나 뷰 같은 경우
view.setBackgroundDrawable(null);
이렇게 처리하는데,
이렇게 되면 GC때 메모리에서 바로 사라지게 되는 것 맞나요?
=============================
선배님들 조언 부탁드립니다ㅎㅎ
ODDM에서 안드로이드 개발자로 일하고 있습니다.
이제 1년 정도 되었네요.
선배님들이 좋은 정보 공유해주시고 저희 후배들에게 많은 가르침을 주시는 점
항상 감사하게 생각하고 있습니다.
서로가 서로에게 도움이 되는 그런 환경이 계속 발전해나갔으면 좋겠습니다.
대한민국 개발자 화이팅!
제가 알기로는 new Bitmap()을 하게 될때 해당 이미지의 메모리가 사용되어지기 때문에 1,2,3번 동일할 것 같습니다.
두번째는 단지 drawable의 포인터에 대한 걸 끊어주는 것이기 때문에 해당 Bitmap은 핸들을 가지고 있다가 직접 recycle을 시키고 null로 설정해 주어야 합니다.