본문 바로가기
카테고리 없음

Android Lifecycle.State 🧐 가이드

by h4r3 2025. 2. 27.
반응형

Android의 Lifecycle.State란?

Lifecycle.State는 Android 컴포넌트(예: Activity, Fragment)의 생명 주기 상태를 나타내며, 특정 상태에서 어떤 작업을 수행할 수 있는지를 결정하는 데 유용합니다.


🔹 Lifecycle.State 순서 및 설명

1. INITIALIZED

  • 컴포넌트가 생성되었지만, 아직 onCreate() 메서드가 호출되기 전의 상태입니다.
  • 이 상태에서는 컴포넌트가 활성화되지 않았으므로 아무 작업도 수행할 수 없습니다.

2. CREATED

  • onCreate() 메서드 호출 후의 상태입니다.
  • UI 초기화 또는 데이터 로드 작업을 수행할 수 있습니다.
  • 하지만 아직 화면에 표시되지는 않습니다.

3. STARTED

  • onStart() 메서드 호출 후의 상태입니다.
  • 화면에 표시되기 시작하지만, 사용자와의 상호작용은 불가능합니다.
  • UI 업데이트 및 애니메이션 시작 등의 작업을 수행할 수 있습니다.

4. RESUMED

  • onResume() 메서드 호출 후의 상태입니다.
  • 화면이 완전히 표시되고 사용자와의 상호작용이 가능합니다.
  • 버튼 클릭, 입력 처리 등의 작업을 수행할 수 있습니다.

5. DESTROYED

  • onDestroy() 메서드 호출 후의 상태입니다.
  • 컴포넌트가 완전히 종료되었으며 더 이상 사용할 수 없습니다.
  • 리소스 해제 및 백그라운드 작업 정리 등의 작업을 수행해야 합니다.

🔹 상태 변화 흐름

변화 유형 상태 흐름

생성 INITIALIZED → CREATED → STARTED → RESUMED
일시 정지 RESUMED → STARTED (예: 다른 Activity가 전면에 나타날 때)
재개 STARTED → RESUMED (예: 일시 정지된 Activity가 다시 활성화될 때)
중지 RESUMED → STARTED → CREATED (예: Activity가 완전히 가려질 때)
종료 RESUMED → STARTED → CREATED → DESTROYED (예: Activity가 종료될 때)

🔹 Lifecycle.State 다이어그램

INITIALIZED
    ↓
CREATED
    ↓
STARTED
    ↓
RESUMED
    ↑   ↓
    |   (일시 정지)
    |   ↓
    | STARTED
    |   ↓
    | CREATED
    |   ↓
    | DESTROYED
    |
    (종료)

🔹 Lifecycle.State 활용 방법

  1. UI 업데이트 최적화
    • STARTED 상태에서만 UI를 업데이트하여 불필요한 리소스 낭비 방지
    • 예: ViewModel을 사용한 데이터 업데이트 시점 조정
  2. 사용자 입력 처리
    • RESUMED 상태에서만 사용자 입력을 처리하여 오류 방지
    • 예: 버튼 클릭 이벤트 리스너 설정
  3. 리소스 정리
    • DESTROYED 상태에서 네트워크 요청 취소 및 데이터 저장
    • 예: onDestroy()에서 API 호출 취소

🔹 LifecycleObserver와 LifecycleOwner 활용

1. LifecycleObserver를 사용한 상태 감지

class MyObserver : DefaultLifecycleObserver {
    override fun onCreate(owner: LifecycleOwner) {
        super.onCreate(owner)
        Log.d("LifecycleObserver", "onCreate 호출됨")
    }

    override fun onResume(owner: LifecycleOwner) {
        super.onResume(owner)
        Log.d("LifecycleObserver", "onResume 호출됨")
    }
}

2. LifecycleOwner에 LifecycleObserver 등록

class MyActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        lifecycle.addObserver(MyObserver())
    }
}
  • LifecycleObserver를 활용하면 Activity나 Fragment의 상태 변화에 따라 특정 동작을 수행할 수 있습니다.
  • 예를 들어, onResume()에서 센서 활성화, onPause()에서 센서 비활성화 같은 작업을 자동으로 수행할 수 있습니다.

🔹 Lifecycle.State vs Lifecycle.Event

구분 설명

Lifecycle.State 현재 Activity 또는 Fragment의 생명 주기 상태를 나타냄
Lifecycle.Event Lifecycle.State를 변경하는 이벤트 (예: ON_CREATE, ON_START, ON_RESUME 등)

🔗 참고 자료

반응형