액티비티 생명주기 (Activity Lifecycle)

지프치프·2021년 7월 4일
0

Android

목록 보기
3/85
post-thumbnail

“Android 로봇은 Google에서 제작하여 공유한 저작물을 복제하거나 수정한 것으로 Creative Commons 3.0 저작자 표시 라이선스의 약관에 따라 사용되었습니다.”


생명주기?

사람을 비롯한 모든 생물들에게 수명이 있듯이
액티비티를 비롯한 여러 컴포넌트에도 수명이 존재하며
이 액티비티의 수명을 안드로이드에선 생명주기(Life cycle)이라고 부른다.
액티비티는 생물이 아니다

생명주기는 액티비티의 실행부터 종료 사이에 발생하는 상태 변화에 따라
해당 상태에 맞는 콜백을 제공한다.

구글 가이드 문서

Activity Lifecycle

구글에서 제공하는 생명주기 플로우

위 플로우에서 보이듯이 총 7개의 콜백들이 존재한다.
각 콜백들의 간략한 설명을 해보자면,

onCreate()
  • 앱이 실행되면 최초 한번 실행되는 콜백으로
    savedInstanceState: Bundle?을 매개변수로 제공한다.
  • 변수들이나 객체의 초기화를 진행할 수도 있고
    savedInstanceState를 활용해 보류되었던 값들을 다시 보여줄 수도 있다.
onStart()
  • onCreate() 콜백이 실행된 후 다음으로 실행되는 콜백
  • 액티비티가 사용자로부터 상호작용을 받을 수 있도록 준비한다.
onResume()
  • onStart() 다음으로 실행되는 콜백
  • 특정 이벤트가 발생하여 포커스가 떠나기 전까지 (일시정지 되기 전까지)
    앱은 이 단계에서 머무르며 사용자와 상호작용을 주고받는다.
onPause()
  • 앱이 일시정지 되었을 때 (포커스가 이 앱을 떠났거나 백그라운드 상태가 되었을때)
    실행되는 콜백
  • 포그라운드 상태가 아니면 필요가 없는 기능(혹은 리소스)을
    정지시키거나 해제해줄 수 있다.
onStop()
  • 앱이 중단됨 상태가 되었을 때 호출되는 콜백으로
    onPause와 마찬가지로 포그라운드 상태가 아니면 필요가 없는 기능들을
    해제시켜줄 수 있다.
  • 멀티윈도우 모드를 지원하는 앱의 경우
    onPause 대신 onStop을 사용하면 포커스가 다른 앱으로 이동해도
    UI 작업을 계속 진행할 수 있다.
onRestart()
  • 앱이 백그라운드에 있다가 포그라운드로 전환될 때(재실행 될 때)
    호출되는 콜백이다.
onDestroy()
  • 앱이 완전히 종료될 때 최초 한번 실행되는 콜백
  • 호출 조건은 2가지가 있다.
    - 사용자에 의해 finish()가 호출되어 종료되는 경우
    - 화면 회전 등을 비롯한 구성변경
  • 이전 콜백들에서 수행하지 않은 리소스 해제들을 처리해야한다.

그 외의 생명주기들

생명주기는 Activity 뿐만 아니라
Fragment, Service 등의 컴포넌트들도 생명주기를 갖는다.
다른 컴포넌트들의 생명주기들도 차차 정리해보도록 하겠다.

개인적으로 공부했던 것을 바탕으로 작성하다보니
잘못된 정보가 있을수도 있습니다.
인지하게 되면 추후 수정하겠습니다.
피드백은 언제나 환영합니다.
읽어주셔서 감사합니다.

profile
지프처럼 거침없는 개발을 하고싶은 개발자

0개의 댓글