룬아님의 취중코딩

Activity 생명주기 메서드 호출 시점 본문

개발/안드로이드 개발

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()

이때는 단순히 위의 상황의 역순으로 생명주기에 일관성을 주기 위해서라고 생각한다.

반응형
Comments