목표
- Activity의 Lifecycle에 대해 이해한다.
- 각 수명주기에 해당하는 메서드가 언제 호출되는지 알아야 한다.
개요
안드로이드의 리소스 제한으로 인해 Activity는 항상 살아있지 못한다. Activity는 Activity가 보여주는 화면(View)이 화면 상에서 뒤로 가거나, 화면 상에서 사라지게 될 경우 특정한 메서드를 호출하게 되는데, Activity의 Lifecycle은 Activity가 각 상황에서 어떤 메서드를 호출하는지를 알려준다.
Activity Lifecycle
onCreate()
Activity가 시작될 때 불림
onStart()
- Activity가 보이기 전에 불림
- Broadcast Receiver은 여기서 등록한다.
onResume()
- Activity 일부가 보일 때 불림
- 일부가 보일때부터 전체가 보일 때까지의 시간만큼만 수행된다.가벼운 작업만을 수행해야 한다. 만약 긴 작업을 수행한다면 버벅임이 생긴다.
onPause()
- Activity가 일부는 보이지만 다른 Activity가 foreground로 나올 때 불림
- 일부가 보이지 않게 될때부터 전체가 사라질 때까지의 시간만큼만 수행된다. 따라서 가벼운 작업만을 수행해야 한다. 만약 긴 작업을 수행한다면 버벅임이 생긴다.
onStop()
- Activity가 하나도 보이지 않게 됐을 때 불림
- Broadcast Recevier은 여기서 해제한다.
onDestroy()
Activity가 finish()되거나 system에 의해 destroy될 때 불림(화면이 없어진 후 시간이 오래 지났거나 할 때)
Activity가 강제 종료 될 때는 불리지 않음
Activity InstanceState Save Methods
아래 메서드들은 Activity의 Lifecycle에는 들어가지 않지만, Activity에서는 없어서는 안되는 메서드들이다.
onRestoreInstanceState()
- onStart() 이후에 불림
- Activity가 강제 종료된 후 다시 켜질 때만 불림.(화면 회전 등)
onSaveInstanceState()
- onStop() 직전에 항상 불림
예시
Activity에서 다른 Activity실행
예시 다운 받기 : github.com/seyoungcho2/ActivityLifeCycleExample
상황
- MainActivity에서 Another Activity를 호출
실행 순서
- D/MainActivity: onPause() called - MainActivity의 일부가 보이지 않게 된다.
- D/AnotherActivity: onCreate() called - Anothe rActivity가 켜졌다.
- D/AnotherActivity: onStart() called - AnotherActivity가 켜지고 있다.
- D/AnotherActivity: onResume() called - AnotherActivity가 다 켜졌다.
- D/MainActivity: onStop() called - MainActivity가 화면 상에서 완전히 사라졌다.
*MainActivity의 onStop()은 다른 Activity가 완전히 켜져서 화면을 완전히 가리게 될 때 호출된다.
Activity화면 회전
D/com.example.sample.MainActivity: onPause() Called
D/com.example.sample.MainActivity: onSaveInstanceState() Called
D/com.example.sample.MainActivity: onStop() Called
D/com.example.sample.MainActivity: onDestroy() Called
D/com.example.sample.MainActivity: onStart() Called
D/com.example.sample.MainActivity: onRestoreInstanceState() Called
D/com.example.sample.MainActivity: onResume() Called
상황
- MainActivity에서 화면 회전
실행 순서
- D/MainActivity: onPause() called - MainActivity의 일부가 보이지 않게 된다.
- D/MainActivity: onSaveInstanceState() called - Activity의 상태가 저장된다.
- D/MainActivity: onStop() called - Activity가 모두 보이지 않게 된다.
- D/MainActivity: onDestroy() called - Activity가 파괴된다.
- D/MainActivity: onStart() called - Activity가 다시 시작된다.
- D/MainActivity: onRestoreInstanceState() called - Activity가 강제 종료된 후 복구되어 State 복구 로직을 수행한다.
- D/ MainActivity: onResume() called - Activity가 Resume된다.
반응형