마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

핸들러 ondestroy 관련 질문입니다.

0 추천
앱 내에서 핸들러로 딜레이 run 5분의 시간을 준후

취소버튼을 눌러 앱을 종료시키면 핸들러도 같이 종료 되나요?

 

만약 종료된다면 서비스를 사용하지 않고 핸들러만 살려놓고

그 핸들러의 시간 내에 앱을 종료 후 핸들러의 시간이 다되면 종료된 앱의 설정도 바꿀 수 있나요?
익명사용자 님이 2015년 4월 14일 질문

1개의 답변

0 추천
 
채택된 답변
간단하게 아래와 같이 테스트 해보면 알겠지만 handler와 activity의 생명주기는 같지 않습니다.

A 액티비티에서 Handler를 만들어서 postDelayed로 10초 후에 run()에서 로그를 찍게 하고

A 액티비티를 종료하면 10초후에 로그가 찍힐 겁니다.
 
그래서 javadoc을 보면 handler를 약한 참조(WeakReference)로 만드는 방식을 권고하고 있습니다.

질문하신대로 만들수는 있으나 메모리 누수(memory leak)가 발생하기 때문에 핸들러는 그렇게 사용하지 마시고, 앱 종료 후 특정 작업이 필요하다면 onDestroy()에서 알람을 등록해서 알람에서 처리하도록 하는 방법을 사용하시길 권유합니다.
Gradler (109,780 포인트) 님이 2015년 4월 14일 답변
아아... 속시원한 답변 감사합니다 !
메모리 누수때문에 추천할 수 없는 방식이군요!
...