[Android] Android Activity Lifecycle 정리

2023. 4. 13. 12:15·기타/Android
목차
  1. Activity Lifecycle 와 Lifecycle callbacks
  2. Lifecycle callbacks 개념 및 구현 정보
  3. onCreate()
  4. onStart()
  5. onResume()
  6. onPause()
  7. onStop()
  8. onDestroy()

Activity Lifecycle 와 Lifecycle callbacks

사용자가 앱을 탐색하고, 앱에서 나가고, 앱으로 다시 돌아가면, 앱의 Activity 인스턴스는 수명 주기 안에서 서로 다른 상태를 통해 전환된다. Activity 클래스는 activity의 상태 변화를 알아차릴 수 있는 여러 콜백을 제공한다. 각 콜백은 상태 변화에 적합한 특정 작업을 실행할 수 있도록 한다.

출처 : https://developer.android.com/docs?hl=ko

 

Lifecycle callbacks 개념 및 구현 정보

onCreate()

  • Activity를 생성할 때 호출, 필수적으로 구현해야 한다.
  • Activity의 전체 수명 주기 동안 한 번만 발생해야 하는 기본 애플리케이션 시작 로직을 실행한다.
  • savedInstanceState : Activity의 이전 저장 상태가 포함된 Bundle 객체이다.
  • setContentView() : XML 레이아웃 파일을 Inflate한다.
  • 예
    • 데이터를 목록에 바인딩
    • Activity를 ViewModel과 연결
    • 일부 클래스 범위 변수를 인스턴스화

onStart()

  • Activity가 시작될 때 호출된다.
  • Activity가 사용자에게 표시 되고, Activity를 포그라운드에 보내 상호작용할 수 있도록 준비한다.
  • 매우 빠르게 완료된다.
  • 예 
    • 애니메이션 실행
    • 데이터 갱신
    • 앱이 UI를 관리하는 코드를 초기화

onResume()

  • Activity가 재개될 때 포그라운드에 표시되고 호출된다.
  • 사용자와 상호작용하는 단계이다.
  • 앱의 포커스가 사라질 때까지 지속된다(전화가 오거나, 다른 Activity로 이동하거나, 기기 화면이 꺼지거나 등).
  • 예
    • onPause()에서 해제하는 component 초기화
    • Activity가 재개될 때 마다 필요한 초기화

onPause()

  • Activity가 포커스를 잃을 때 호출된다(항상 소멸되는 것은 아니다).
  • 포그라운드에 있지 않게 되었다는 것을 나타내지만 멀티 윈도우 모드에서는 여전히 표시 될 수 있다.
  • 계속 실행되어서는 안되지만 잠시 후 다시 시작할 작업을 일시중지하거나 조정한다.
  • 구성요소가 포그라운드에 있지 않을 때 실행할 필요가 없는 기능을 모두 정지할 수 있다.
    • 카메라 미리보기 정지
  • UI 관련 리소스와 작업을 해제할 수도 있지만 onStop()에서 해제하는것을 권장한다.
    • 이유 : 멀티 윈도우 모드에서는 여전히 보일 수 있다.
  • 아주 잠깐 실행되므로 저장 작업을 실행하기에는 시간이 부족할 수 있다.
    • 애플리케이션 또는 사용자 데이터 저장, 네트워크 호출, 데이터베이스 트랜잭션을 실행해서는 안 된다.
      • 메서드 실행이 끝나기 전에 완료되지 못할 수도 있다.
    • 부하가 큰 종료 작업은 onStop() 상태일 때 실행해야 한다.
  • Activity가 다시 시작되거나(onResume()) 사용자에게 완전히 보이지 않게 될 때까지(onStop()) 이 상태에 머무른다.
  • 예
    • 방해되는 이벤트가 발생할 때
    • 멀티 윈도우 모드에서 하나의 앱 이외의 다른 모든 앱
    • 새로운 반투명 Activity가 열릴 때(예: 대화상자)

onStop()

  • Activity가 더 이상 사용자에게 표시되지 않으면 호출된다.
  • 앱이 사용자에게 보이지 않는 동안 필요하지 않은 리소스를 해제하거나 조정해야 한다.
    • 애니메이션을 일시중지
    • 세밀한 위치 업데이트에서 대략적인 위치 업데이트로 전환
  • CPU를 비교적 많이 소모하는 종료 작업을 실행해야 한다.
    • 정보를 데이터베이스에 저장
  • Activity 객체는 메모리 안에 머무르게 된다.
    • 이 객체가 모든 상태 및 멤버 정보를 관리하지만 window manager와 연결되어 있지는 않다. Activity가 다시 시작되면 이 정보를 다시 호출한다. onResume() 상태에 이르기까지 생성된 구성요소는 다시 초기화할 필요가 없다.
    • 시스템은 레이아웃에 있는 각 View 객체의 현재 상태도 기록한다. 따라서 사용자가 EditText 위젯에 텍스트를 입력하면 해당 내용이 저장되기 때문에 이를 저장 및 복원할 필요가 없다.
  •  예
    • 새로 시작된 Activity가 화면 전체를 차지할 경우
    • Activity의 실행이 완료되어 종료될 시점

onDestroy()

  • Activity가 소멸되기 전에 호출된다.
  • ViewModel 객체를 사용하여 Activity의 관련 뷰 데이터를 포함해야 한다.
  • 예
    • 사용자가 Activity를 완전히 닫거나 finish()가 호출되어 Activity가 종료되는 경우
    • 구성 변경(기기 회전 또는 멀티 윈도우 모드)으로 인해 시스템이 일시적으로 Activity를 소멸시키는 경우
      • 다음 두 가지 시나리오는 isFinishing() 메서드로 구분할 수 있다. 
        • 구성 변경으로 인해 다시 생성될 경우 ViewModel은 그대로 보존되어 다음 Activity 인스턴스에 전달된다.
        • Activity가 다시 생성되지 않을 경우 ViewModel은 onCleared() 메서드를 호출하여 Activity가 소멸되기 전에 모든 데이터를 정리해야 한다.
    • 이전의 콜백에서 아직 해제되지 않은 모든 리소스를 해제해야 한다.

'기타 > Android' 카테고리의 다른 글

[Android] Data Binding이란?  (0) 2023.07.16
[Android] 안드로이드 Go to the documentation to learn how to Fix dependency resolution errors. 에러 해결 방법  (0) 2023.04.21
[Kotlin] This expressions 란?  (1) 2023.02.27
[Kotlin] Sealed class 란?  (0) 2023.02.25
[Kotlin] Scope functions(let, run, with, apply, also) 정리  (0) 2023.02.22
  1. Activity Lifecycle 와 Lifecycle callbacks
  2. Lifecycle callbacks 개념 및 구현 정보
  3. onCreate()
  4. onStart()
  5. onResume()
  6. onPause()
  7. onStop()
  8. onDestroy()
'기타/Android' 카테고리의 다른 글
  • [Android] Data Binding이란?
  • [Android] 안드로이드 Go to the documentation to learn how to Fix dependency resolution errors. 에러 해결 방법
  • [Kotlin] This expressions 란?
  • [Kotlin] Sealed class 란?
ohhoooo
ohhoooo
  • ohhoooo
    ohhoooo
    ohhoooo
  • 전체
    오늘
    어제
    • 전체 글 (84)
      • iOS (1)
      • Swift (1)
      • Data structure & Algorithm (67)
        • 프로그래머스 (67)
      • 기타 (15)
        • TIL (2)
        • Android (13)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
ohhoooo
[Android] Android Activity Lifecycle 정리
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.