Android 수명 주기
액티비티와 컴포지션의 수명 주기를 이해해 보세요.
Android 수명 주기은(는) CoddyKit의 무료 Android Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Android Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Android Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
생명주기란 무엇인가요
모든 Android 액티비티는 사용자가 앱을 열고, 나가고, 다시 돌아오는 동안 일련의 상태를 거칩니다. 이것이 생명주기입니다.
생명주기를 이해하면 적절한 시점에 작업을 시작하고 중지할 수 있습니다.
액티비티의 핵심 콜백
기본 액티비티 생명주기 콜백은 다음 순서로 실행됩니다.
onCreate— 액티비티가 생성되는 중입니다.onStart— 화면에 표시되기 시작합니다.onResume— 전경에 있으며 상호작용할 수 있습니다.onPause/onStop/onDestroy— 화면을 벗어나는 과정입니다.
일반적인 흐름
앱 열기: onCreate → onStart → onResume.
홈 버튼 누르기: onPause → onStop.
돌아오기: onRestart → onStart → onResume.
생명주기 상태와 이벤트 비교
Jetpack Lifecycle 라이브러리는 이를 상태(CREATED, STARTED, RESUMED, DESTROYED)와 이벤트(ON_CREATE, ON_START, ...)로 모델링합니다.
구성 요소는 원시 콜백을 재정의하는 대신 이러한 상태와 이벤트를 관찰할 수 있습니다.
LifecycleOwner
액티비티, 프래그먼트, Compose 호스트는 LifecycleOwners입니다. 이러한 구성 요소는 다른 구성 요소가 관찰할 수 있는 Lifecycle 객체를 노출합니다.
val owner: LifecycleOwner = this // an Activity
val lifecycle = owner.lifecycle리소스에서 생명주기가 중요한 이유
많은 리소스는 화면이 표시되는 동안에만 활성 상태여야 합니다.
- 위치 업데이트
- 센서 리스너
- 카메라 세션
배터리를 절약하고 누수를 방지하려면 onStart/onResume에서 시작하고 onStop/onPause에서 중지하세요.
Jetpack Compose의 생명주기
컴포저블에는 액티비티 콜백이 없습니다. 대신 컴포지션 생명주기가 있으며, 컴포지션에 들어오고 재구성된 다음 결국 컴포지션을 떠납니다.
DisposableEffect로 컴포지션에 반응하기
DisposableEffect는 컴포저블이 컴포지션에 들어올 때 설정 작업을 실행하고, 컴포지션을 떠날 때 정리 작업을 실행합니다.
@Composable
fun Screen() {
DisposableEffect(Unit) {
// setup, e.g. register listener
onDispose {
// cleanup when leaving composition
}
}
}Compose에서 실제 생명주기 관찰하기
컴포저블에서 실제 액티비티 생명주기 이벤트에 반응하려면 DefaultLifecycleObserver로 LifecycleOwner를 관찰하세요.
@Composable
fun OnResume(onResume: () -> Unit) {
val owner = LocalLifecycleOwner.current
DisposableEffect(owner) {
val obs = object : DefaultLifecycleObserver {
override fun onResume(o: LifecycleOwner) = onResume()
}
owner.lifecycle.addObserver(obs)
onDispose { owner.lifecycle.removeObserver(obs) }
}
}ViewModel과 생명주기
기억하세요. ViewModel은 onStart/onStop과 같은 개별 생명주기 상태보다 더 오래 유지됩니다. 소유자가 영구적으로 사라질 때만 정리됩니다. 그렇기 때문에 이곳에 상태를 보관해도 안전합니다.
모든 내용을 함께 적용하기
잘 구성된 화면은 다음과 같습니다.
- 지속되는 상태를 ViewModel에 보관합니다.
- 생명주기를 인식하여 화면에 표시될 때만 필요한 리소스를 시작하고 중지합니다.
- UI가 최소 STARTED 상태일 때만 흐름을 수집합니다(다음 레슨에서 설명합니다).
빠른 확인
생명주기를 제대로 이해했는지 확인해 보세요.
복습
다음 내용을 배웠습니다.
- 액티비티는 CREATED, STARTED, RESUMED, DESTROYED 상태를 차례로 거칩니다.
- Compose에는 고유한 컴포지션 생명주기가 있으며
DisposableEffect를 통해 처리합니다. - 실제 생명주기 이벤트에 반응하려면
LifecycleOwner를 관찰합니다. - ViewModel은 의도적으로 이러한 상태보다 오래 유지됩니다.
자주 묻는 질문
“Android 수명 주기” 강의는 무료인가요?
네 — “Android 수명 주기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Android Academy 강의 전체를 잠금 해제할 수 있습니다. Android Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“Android 수명 주기”에서 뭘 배우나요?
액티비티와 컴포지션의 수명 주기를 이해해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Android Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Android Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Android Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“Android 수명 주기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Android Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Android Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.