개발/안드로이드 개발
Activity 생명주기 메서드 호출 시점
룬아님
2020. 2. 17. 14:56
1. 시작할 때
onCreate -> onStart -> onResume
2. 화면 회전할 때 (가로/세로)
onPause -> onStop -> onDestroy -> onCreate -> onStart -> onResume
3. 다른 액티비티가 위에 뜰 때 / 전원 키로 화면 OFF할 때 / 홈 키
onPause -> onStop
4. 백 키로 엑티비티 종료
onPause -> onStop -> onDestroy
5. 백 키로 기존 액티비티에 돌아올 때 / 홈 키로 나갔다가 돌아올 때
onRestart -> onStart -> onResume
6. 다이얼로그 테마 액티비티나 투명 액티비티가 위에 뜰 때
onPause
7. setReuslt() 메서드는 finish() 전에 호출
8. OutOfMemoryError에 의하여 앱이 강제 종료될 수도 있기 때문에 onStop()과 onDestroy()가 반드시 실행된다는 보장이 없다.
9. ActivityA에서 ActivityB를 실행할 때
ActivityA -> onPause
ActivityB -> onCreate -> onStart -> onResume
ActivityA -> onStop (ActivityB가 다이얼로그거나 투명 액티비티면 호출하지 않음)
onStop()은 다이얼로그 테마 액티비티나 투명 액티비티일 경우에는 호출되지 않는다. 이 것을 알기 위해서는 ActivityB가 보여지고 난 후이기 때문에 onStop()이 ActivityB의 생명주기를 마친 이후에 호출되는 것이다.
10. ActivityB를 닫고 ActivityA로 돌아갈 때
ActivityB -> onPause()
ActivityA -> onRestart() -> onStart() -> onResume()
ActivityB -> onStop() -> onDestroy()
이때는 단순히 위의 상황의 역순으로 생명주기에 일관성을 주기 위해서라고 생각한다.
반응형