본문 바로가기

Android 공부/Lifecycle

Android Lifecycle

Lifecycle

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

  • Activit

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

  • Fragment


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

 

 

'Android 공부 > Lifecycle' 카테고리의 다른 글

다크모드  (0) 2026.02.19
가로모드 대응  (0) 2026.02.19