JHB의 프로그래밍 삽질기

[Android] 메모리를 해제 후에 돌아왔더니 본문

PROGRAMMING/Android Java

[Android] 메모리를 해제 후에 돌아왔더니

roter 2010.10.31 00:19

안드로이드로 Google Map을 다루면서,

맵에서 다루는 메모리가 넘치길래 onStop에서 메모리를 다 해제해 주었다.(자바는 =null 해주면 알아서 가비지 컬렉터가 해제해간다.)

근데 문제는 전화가 온걸 받은 뒤 다시 맵 화면으로 돌아가면~ 두둥~ 에러가 나는 것이었다.
홈 버튼을 눌러 메인 페이지에 다녀올 때도 마찬가지였다.

문제는 onResume에 있었다.
난 그냥 막연히 뒤로 갔다 돌아오면 onCreate가 다시 실행될 줄 알았는데, onCreate같은건 실행될 기미조차 없고, 그냥 onResume만 호출된다.
내가 기존에 맵에 사용되는 메모리를 다 onCreate에서 처리해 줬기 때문에, onStop으로 인해 해제된 메모리를 다시 불러주어야 했다.

액티비티 호출 시 호출 순서가
onCreate->onResume 이기에, onCreate에 있던 소스를 onResume에 다 때려 박아 버렸다.

이렇게 했더니 맨처음 액티비티 실행 때도 onResume이 호출되고, onStop이후 액티비티로 복귀했을 때도 onResume이 호출되기에 해제된 메모리로 인하여 에러가 나는 일은 없었다.

물론 평소엔 특별히 메모리 해제를 해주지 않는 이상 전화올 때나 홈으로 가는 경우에는 메모리를 해제하지 않기 때문에 굳이 onResume에서 메모리를 다시 로드하라고 해줄 필요는 없을 것 같다.(추측.. 이지만 왠지 맞을 것 같음)

참고로 onResume은 액티비티로 복귀했을 때 발생하는 onRestart다음에도 호출된다.
0 Comments
댓글쓰기 폼