Lifecycle
앱의 실행부터 종료까지의 과정
- Activit

- onCreate()
- Activity가 생성되면 가장 먼저 호출됨
- 화면 Layout 정의, View 생성, Viewbinding, Databinding 등은 이곳에 구현함
- 생명주기 통틀어서 단 한 번만 수행되는 메소드
- Activity 최초 실행에 해야 하는 작업을 수행하기에 적합함
- onStart()
- Activity가 화면에 표시되기 직전에 호출됨
- 화면에 진입할 때마다 실행되어야 하는 작업을 이곳에 구현함
- onResume()
- Activity가 화면에 보이는 직후에 호출됨
- 현재 Activity가 사용자에게 포커스인 되어있는 상태
- onPause()
- Activity가 화면에 보이지 않은 직후에 호출됨
- 현재 Activity가 사용자에게 포커스 아웃되어있는 상태
- 다른 Activity가 호출되기 전에 실행되기 때문에 무거운 작업을 수행하지 않도록 주의해야 함
- 영구적인 Data는 이곳에 저장
- onStop()
- Activity가 다른 Activity에 의해 100% 완전히 가려질 때 호출되는 메서드
- 홈 키를 누르는 경우, 다른 액티비티로의 이동이 있는 경우가 있음
- 이 상태에서 Activity가 호출되면, onRestart() 메서드가 호출됨
- onDestroy()
- Activity가 완전히 종료되었을 때 호출되는 메소드 다시 activity를 호출하면 onCreate()부터 실행하게 된다.
- 시스템: 메모리 부족(프로세스 종료)
- onStop(), onDestroy() 메서드는 메모리 부족이 발생하면 스킵될 수 있음
- 종료 요인
- 사용자: finish(), onBackPressed()(기존 액티비티의 onResume()까지 호출된 후 onDestroy() 호출)
- 시스템: 메모리 부족(프로세스 종료)
- onStop(), onDestroy() 메서드는 메모리 부족이 발생하면 스킵될 수 있음
- Activity가 완전히 종료되었을 때 호출되는 메소드 다시 activity를 호출하면 onCreate()부터 실행하게 된다.
- onRestart()
- onStop()이 호출된 이후에 다시 기존 Activity로 돌아오는 경우에 호출되는 메소드
- onRestart()가 호출된 이후 이어서 onStart()가 호출
- onCreate()
- Fragment

- onCreate()
- Fragment만 생성된 상태
- 아직 Fragment View 가 생성되지 않았기 때문에 Fragment 의 View 와 관련된 작업을 두기에 적절하지 않음
- onCreateView()
- 반환값으로 정상적인 Fragment View 객체를 제공했을 때만 Fragment View 의 Lifecycle 이 생성될 수 있음
- activity의 setContentView같은 느낌 - view만 구성한 느낌
- onViewCreated()
- onCreateView()에서 반환받은 view가 파라미터로 전달됨
- INITIALIZED 상태
- Fragment View 의 Lifecycle 이 INITIALIZED 상태로 업데이트 됐기 때문에 View 의 초기값을 설정하거나 LiveData의 Observe, RecyclerView, Viewpager2 등의 adapter 세팅들을 여기서 하는게 적절함
- onViewStateRestored()
- 저장해둔 모든 state 값이 Fragment 의 View 계층구조에 복원 됐을 때 호출된다
- created 상태
- 뷰의 상태값을 체크할 수 있다
- onStart()
- Fragment 가 사용자에게 보여질 수 있을 때 호출
- 이 시점부터는 Fragment 의 child FragmentManager 통해 FragmentTransaction 을 안전하게 수행할 수 있다
- started 상태
- onResume()
- 프래그먼트가 사용자와 상호작용할 수 있을 때 호출된다
- onResume() 이 호출되지 않은 시점에서는 입력을 시도하거나 포커스를 설정하는 등의 작업을 임의로 하면 안된다는 것을 의미
- resumed 상태
- onPause()
- 사용자가 Fragment 를 떠나기 시작했지만 Fragment 는 여전히 visible 일 때 onPause() 가 호출된다
- started 상태
- onStop()
- Fragment 가 더이상 화면에 보여지지 않게 되면 호출된다
- created 상태
- 부모 액티비티나 프래그먼트가 중단됐을 때 뿐만 아니라, 부모 액티비티나 프래그먼트의 상태가 저장될 때도 호출된다
- API 28 버전부터 onStop() 이 onSaveInstanceState() 함수보다 먼저 호출됨으로써 onStop() 이 FragmentTransaction 을 안전하게 수행할 수 있는 마지막 지점이 되었다
- onDestroyView()
- 모든 exit animation 과 transition 이 완료되고, Fragment 가 화면으로부터 벗어났을 경우 Fragment View 의 Lifecycle은 DESTROYED 가 되고 onDestroy() 가 호출된다
- 가비지 컬렉터에 의해 수거될 수 있도록 Fragment View 에 대한 모든 참조가 제거되어야 함
- onDestroy()
- Fragment 가 제거되거나 FragmentManager 가 destroy 됐을 경우, 프래그먼트의 Lifecycle 은 DESTROYED 상태가 되고, onDestroy() 콜백 함수가 호출된다
- 이후 onDetach()가 호출된다
- onCreate()
'Android 공부 > Lifecycle' 카테고리의 다른 글
| 다크모드 (0) | 2026.02.19 |
|---|---|
| 가로모드 대응 (0) | 2026.02.19 |