
1️⃣ Activity Lifecycle

1) onCreate()
- Activity가 생성되면 가장 먼저 호출되는 메소드
- 화면 Layout 정의, View 생성, 데이터바인딩 등은 이곳에 구현함
- 생명주기 통틀어서 단 한 번만 수행되기 때문에, Activity 최초 실행에 해야하는 작업을 수행하기에 적합함
2) onStart()
- Activity가 화면에 표시되기 직전에 호출됨
- 화면에 진입할 때마다 실행되어야 하는 작업을 이곳에 구현함
3) onResume()
- Activity가 화면에 보여지는 직후에 호출됨(일부가 보이기 시작할 경우, 사용자와 상호작용하기 직전 상태임)
- 일부가 보일 때부터 전체가 보일 때까지의 시간만큼만 수행되기 때문에, 가벼운 작업만을 수행해야 함
4) onPause()
- Activity가 화면에 보여지지 않은 직후에 호출됨(일부가 보이지 않기 시작할 경우)
- 현재 Activity가 사용자에게 포커스아웃 되어 있는 상태
- 일부가 보이지 않게 될 때부터 전체가 사라질 때까지의 시간만큼만 수행되기 때문에, 가벼운 작업만을 수행해야 함
5) onStop()
- Activity가 다른 Activity에 의해 100% 가려질 때(홈 키를 누름, 다른 액티비티로 이동함 등) 호출되는 메소드
- 이 상태에서 기존 Activity를 다시 호출하면, onRestart()가 호출됨
6) onDestory()
- Activity가 종료되기 전에 호출되는 메소드
- 사용자가 Activity를 완전히 닫거나, Activity에서 finish()가 호출되어 Activity가 종료되는 경우에 호출됨
- 또는 구성 변경(기기 회전, 멀티 윈도우 모드 등)으로 인해 시스템이 일시적으로 Activity를 소멸시키는 경우 호출됨
7) onRestart()
- onStop()이 호출된 이후에 다시 기존 Activity로 돌아오는 경우 호출되는 메소드
- onRestart()가 호출된 이후 이어서 onStart()가 호출됨
2️⃣ 상황별 Lifecycle 변화
Activity(A)에서 Activity(B)로 이동할 때
- A Activity에서 onPause() 호출
- B Activity에서 onCreate() 호출
- B Activity에서 onStart() 호출
- B Activity에서 onResume() 호출 (B Activity가 완전히 켜짐)
- A Activity에서 onStop() 호출
Activity(B)에서 Activity(A)로 돌아갈 때
- B Activity에서 onPause() 호출
- A Activity에서 onRestart() 호출
- A Activity에서 onStart() 호출
- A Activity에서 onResume() 호출
- B Activity에서 onStop() 호출
- B Activity에서 onDestroy() 호출
Activity가 회전할 때
- onPause() 호출
- onSaveInstanceState() 호출
(화면이 회전된 후에도 유지하고 싶은 데이터값을 저장함)
- onStop() 호출
- onDestroy() 호출
- onStart() 호출
- onRestoreInstanceState() 호출
(onSaveInstanceState()에서 저장한 데이터가 있다면, 데이터를 가져와 액티비티를 복원함)
- onResume() 호출
참고자료
https://velog.io/@its-mingyu/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-Activity-Lifecycle
https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko
https://todaycode.tistory.com/25
https://readystory.tistory.com/199
https://developer.android.com/guide/components/fragments?hl=ko
https://jminie.tistory.com/164