Android Activity Life Cycle (안드로이드 생명 주기)

액티비티란?

사용자 "인터페이스 화면" 을 가지며 특정한 작업을 담당하는 컴포넌트

  • 일반적으로 UI를 갖는 하나의 스크린을 나타낸다.
  • 안드로이드 애플리케이션은

Activity의 역할

onCreate() - 액티비티 생성할 때

  • 액티비티가 만들어지고 나서 최초에 한번만 호출
  • 액티비티에 필요한 리소스들을 초기화 및 View의 상태들을 설정함
  • 이전 상태가 저장되어 있을 경우, 번들 객체를 참조하여 복원 가능
  • onCreate() 이후에는 항상 onStart()가 호출

onStart() - 화면에 보여지기 시작할 때

  • 아직 사용자와 상호작용은 할 수 없는 단계
  • 액티비티가 시작되기 전에 호출되는 함수/액티비티가 멈춘 후, 다시 호출하는 함수
  • 액티비티가 화면에 보이기 직전에 호출됨
  • 매우 빠르게 끝나고 onResume() 단계로 넘어감
  • 보통 Broadcast Receiver는 이 단계에서 등록하는 것이 좋다.

onResume() - 화면이 나타나 있고 실행중일 때

  • 사용자와 상호작용이 가능해지는 단계
  • 액티비티가 사용자와 상호 작용하기 바로 직전에 호출되는 함수
  • 이 메소드가 호출되고 나서 액티비티가 사용자에게 보이기 시작함
  • 사용자에게 focus를 잡은 상태

onRestart()

  • 액티비티가 중지된 이후에 호출되는 메소드로, 다시 시작되기 직전에 호출됨

다른 액티비티가 호출되는 경우

onPause() - 화면의 일부가 다른 액티비티에 가려질 때

  • 액티비티 위에 액티비티가 올라와서 focus를 잃었을 때 호출
  • 액티비티가 완전히 가려지지 않고 부분만 가려진 상태에서 호출되는 함수
  • 다른 액티비티가 호출되기 전에 실행되기 때문에 시간이 많이 소요되는 작업을 하지 않도록 주의해야함
  • 영구적인 data는 여기서 저장함
  • 액티비티가 이 상태에 들어가면 시스템은 액티비티를 강제 종료 할 수 있음

onStop() - 다른 액티비티의 실행으로 완전히 가려질 때

  • 액티비티 위에 다른 액티비티가 완전히 올라와서 100% 가려질 때 호출되는 함수
  • 즉, 사용자에게서 더 이상 보이지 않을 때 호출된다.
  • 이 상태에서 액티비티가 다시 불려지면 onRestart()가 호출됨
  • 시스템이 onstop() 상태에 들어오면 onSaveInstanceState()라는 메소드를 호출하는데, 여기서 k-v형태로 값 저장이 되고 onCreate()에서 복원이 가능함

onDestroy() - 액티비티 종료

  • 액티비티가 완전히 스택에서 없어질 때 호출되는 함수
  • Finish() 메소드가 호출되거나 시스템 메모리 확보를 위해서 시스템이 강제로 종료시키는 경우에 호출될 수 있음

사용 예

  • 앱을 사용하는데 카카오톡 메시지가 온다면?

    부분만 가려지므로 onPause()가 호출된다.

  • 데이터를 불러오는 작업은 어디서 해야할까?

    onCreate()


activity-lifecycle

Last Updated: