Lifecycle 라이브러리는 Jetpack Compose와 통합할 수 있는 내장 API를 제공합니다. 주요 API에는 다음이 포함됩니다.
- 현재
Lifecycle.State
의 흐름 - 특정
Lifecycle.Event
를 기반으로 블록을 실행할 수 있도록 하는LifecycleEffects
이러한 통합은 Compose 계층 구조 내에서 Lifecycle을 관리하는 편리한 후크를 제공합니다. 이 문서에서는 앱에서 이를 사용하는 방법을 설명합니다.
흐름을 사용하여 수명 주기 상태 수집
Lifecycle은 현재 Lifecycle.State
를 Kotlin StateFlow
로 제공하는 currentStateFlow
속성을 노출합니다. 이 Flow
를 State
로 수집할 수 있습니다. 이렇게 하면 앱이 컴포지션 중에 Lifecycle의 변경사항을 읽을 수 있습니다.
val lifecycleOwner = LocalLifecycleOwner.current
val stateFlow = lifecycleOwner.lifecycle.currentStateFlow
…
val currentLifecycleState by stateFlow.collectAsState()
앞의 예시는 lifecycle-common
모듈을 사용하여 액세스할 수 있습니다. currentStateAsState()
메서드는 lifecycle-runtime-compose
모듈에서 사용할 수 있으며 한 줄로 현재 Lifecycle 상태를 편리하게 읽을 수 있습니다. 다음 예를 참고하세요.
val lifecycleOwner = LocalLifecycleOwner.current
val currentLifecycleState = lifecycleOwner.lifecycle.currentStateAsState()
수명 주기 이벤트에서 코드 실행
특정 Lifecycle.Event
가 발생할 때 블록을 실행할 수 있는 LifecycleEffects
도 있습니다.
LifecycleEventEffect(Lifecycle.Event.ON_START) {
// do something here
}
LifecycleEventEffect
외에 LifecycleStartEffect
및 LifecycleResumeEffect
도 사용할 수 있습니다. 이러한 API는 특정 이벤트에 연결됩니다. 또한 이벤트가 시작되었을 수 있는 코드를 정리하는 데 도움이 되는 추가 블록을 기본 블록 내에 제공합니다.
LifecycleStartEffect
LifecycleStartEffect
는 LifecycleEffect
와 유사하지만 Lifecycle.Event.ON_START
이벤트에서만 실행됩니다. 다른 Compose 키처럼 작동하는 키도 허용합니다. 키가 변경되면 블록이 다시 실행됩니다.
Lifecycle.Event.ON_STOP
이벤트가 있거나 효과가 컴포지션을 종료하면 onStopOrDispose
블록이 실행됩니다. 이렇게 하면 시작 블록의 일부였던 모든 작업을 삭제할 수 있습니다.
LifecycleStartEffect {
// ON_START code is executed here
onStopOrDispose {
// do any needed clean up here
}
}
LifecycleResumeEffect
LifecycleResumeEffect
는 LifecycleStartedEffect
와 동일한 방식으로 작동하지만 대신 Lifecycle.Event.ON_RESUME
이벤트에서 실행됩니다. 또한 정리 작업을 실행하는 onPauseOrDispose
블록도 제공합니다.
LifecycleResumeEffect {
// ON_RESUME code is executed here
onPauseOrDispose {
// do any needed clean up here
}
}