Android 생명주기란?
Android 생명주기는 앱의 Activity(액티비티) 가 실행되고 종료되기까지의 일련의 상태 변화 과정을 말합니다.
각 단계마다 호출되는 콜백 메서드가 존재하며, 이를 정확히 이해해야 앱이 비정상 종료되거나 데이터가 유실되는 문제를 방지할 수 있습니다.
주요 흐름 요약:
- 앱 실행 →
onCreate()→onStart()→onResume() - 홈 버튼 또는 전화 수신 →
onPause()→onStop() - 사용자가 다시 돌아옴 →
onRestart()→onStart()→onResume() - 완전 종료 →
onDestroy()
👉 즉, onPause()와 onStop()은 앱이 일시 중단된 상태를 나타내며,onRestart()는 앱이 다시 활성화될 때 호출됩니다.
이 순서를 숙지해야 정상적인 복원 로직을 구현할 수 있습니다.
주요 생명주기 콜백 단계
| 메서드 | 설명 |
|---|---|
| onCreate() | 액티비티가 처음 생성될 때 호출. UI 초기화, 데이터 세팅을 수행합니다. |
| onStart() | 화면에 나타나기 직전에 호출됩니다. |
| onResume() | 사용자 입력이 가능한 활성 상태로 진입합니다. |
| onPause() | 다른 액티비티로 전환될 때 호출. 데이터 저장에 적합합니다. |
| onStop() | 화면에서 완전히 사라질 때 호출. 리소스 해제를 처리합니다. |
| onDestroy() | 액티비티가 완전히 종료될 때 호출됩니다. 모든 자원을 정리해야 합니다. |
생명주기 로그 예제 코드 (Kotlin)
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Log.d("Lifecycle", "onCreate 호출")
}
override fun onStart() {
super.onStart()
Log.d("Lifecycle", "onStart 호출")
}
override fun onResume() {
super.onResume()
Log.d("Lifecycle", "onResume 호출")
}
override fun onPause() {
super.onPause()
Log.d("Lifecycle", "onPause 호출")
}
override fun onStop() {
super.onStop()
Log.d("Lifecycle", "onStop 호출")
}
override fun onDestroy() {
super.onDestroy()
Log.d("Lifecycle", "onDestroy 호출")
}
}
이 코드를 실행하고 Logcat에서 확인하면, 액티비티의 상태 전환 순서를 명확히 확인할 수 있습니다.
Android 생명주기 이해의 중요성
- 메모리 누수 방지:
onStop()·onDestroy()에서 리소스를 제대로 해제해야 메모리 누수를 막을 수 있습니다. - 데이터 유지:
onPause() 또는 onSaveInstanceState()를 활용하면 앱 전환 시 데이터 손실을 방지할 수 있습니다. - 성능 최적화:
화면에 보이지 않는 동안 불필요한 연산을 중지하여 배터리 소모를 줄일 수 있습니다. - 사용자 경험 개선:
사용자가 다시 돌아왔을 때 이전 상태를 복원하면 자연스럽고 매끄러운 UX를 제공합니다.
Fragment 생명주기도 함께 이해하기
프래그먼트(Fragment)는 액티비티 내에서 동작하는 UI 단위로, 유사하지만 독립적인 생명주기를 가집니다.
주요 메서드는 다음과 같습니다.
- onAttach()
- onCreateView()
- onViewCreated()
- onPause()
- onDestroyView()
복잡한 UI를 구성할 때 이 과정을 이해해야 오류 없는 화면 전환이 가능합니다.
Jetpack Compose와 생명주기
Jetpack Compose는 선언형 UI이지만, 여전히 LifecycleOwner 개념이 존재합니다.rememberLifecycleObserver() 등을 활용해 컴포넌트의 상태를 안전하게 관리할 수 있습니다.
결론: Android 생명주기는 기본 중의 기본
Android 생명주기를 이해하는 것은 앱 개발의 출발점입니다.
이 개념이 확실히 잡혀야 데이터 유실, 화면 깜빡임, 크래시 등의 문제를 줄이고 안정적인 앱을 개발할 수 있습니다.
✅ 한 줄 요약:
“Android 생명주기를 이해하면 앱의 품질이 달라집니다.”