[Android] Activity Lifecycle

mingsso·2023년 3월 27일

Android

목록 보기
3/12

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)로 이동할 때

    1. A Activity에서 onPause() 호출
    1. B Activity에서 onCreate() 호출
    1. B Activity에서 onStart() 호출
    1. B Activity에서 onResume() 호출 (B Activity가 완전히 켜짐)
    1. A Activity에서 onStop() 호출

Activity(B)에서 Activity(A)로 돌아갈 때

    1. B Activity에서 onPause() 호출
    1. A Activity에서 onRestart() 호출
    1. A Activity에서 onStart() 호출
    1. A Activity에서 onResume() 호출
    1. B Activity에서 onStop() 호출
    1. B Activity에서 onDestroy() 호출

Activity가 회전할 때

    1. onPause() 호출
    1. onSaveInstanceState() 호출
      (화면이 회전된 후에도 유지하고 싶은 데이터값을 저장함)
    1. onStop() 호출
    1. onDestroy() 호출
    1. onStart() 호출
    1. onRestoreInstanceState() 호출
      (onSaveInstanceState()에서 저장한 데이터가 있다면, 데이터를 가져와 액티비티를 복원함)
    1. 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

profile
🐥👩‍💻💰

0개의 댓글