안드로이드 개발 질문/답변
(글 수 45,052)
OnDraw(Canvas)를 통해 화면에 그려질 녀석들을 그리고
Touch 이벤트를 통해 그 위에 이동 경로를 그리고 싶습니다.
Touch 이벤트 후에 invalidate를 호출해서 그려주고 있었는데.
이 경우 OnDraw를 통해서 모든 Resource를 다시 그려주어야 해서
Resource의 양이 많아 질 수록 부담이 되고,
결국에는 메모리 부족으로 뻗어 버리는 문제가 발생하였습니다.
대안으로 생각한 것이 invalidate(rect)를 사용해서 변경된 부분의 영역만을 다시
그리고 싶은데.. 이 부분에 서 막혀서 진도가 나가지 않네요..
invalidate(rect)를 호출해서 화면을 그리는 경우 rect 영역의 resource를 그려주고
변경된 내용을 그려주어야 하는데.. 해당 영역의 resource를 다시 그려주기 위해서는
결국 위에서 하던 ....작업을 다시 해야 하는 문제가 발생합니다.
마지막으로 invalidate를 호출해서 이전 이미지 정보를 지우고 다시 그리기 보다는
기존의 canvas를 얻어서 그 위에 변경된 정보를 그려주면 되지 않을까.. 하는 생각을 (처음부터 했지만..어떻게 해야 하는지..)
다시 하게 되었습니다.
많은 조언 부탁 드립니다.




솔직히 캔버스에서 변경된 부분만 그리는 방법은 잘 모르겠습니다. 하지만...
제 생각에는 해당 어플리케이션이 메모리부족이 되는 근본적인 문제를 간과하시면 곤란하지 않을까 싶습니다. 앱의 디자인(그래픽이 아님)이 모바일 디바이스와 많이 어긋나서 생기는 문제라면 앱의 디자인을 다시 점검해 보시는 것이 필요하다고 봅니다.