Android 생명주기 완벽 가이드|onCreate부터 onDestroy까지 한눈에 정리

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 생명주기 이해의 중요성

  1. 메모리 누수 방지:
    onStop()·onDestroy()에서 리소스를 제대로 해제해야 메모리 누수를 막을 수 있습니다.
  2. 데이터 유지:
    onPause() 또는 onSaveInstanceState()를 활용하면 앱 전환 시 데이터 손실을 방지할 수 있습니다.
  3. 성능 최적화:
    화면에 보이지 않는 동안 불필요한 연산을 중지하여 배터리 소모를 줄일 수 있습니다.
  4. 사용자 경험 개선:
    사용자가 다시 돌아왔을 때 이전 상태를 복원하면 자연스럽고 매끄러운 UX를 제공합니다.

Fragment 생명주기도 함께 이해하기

프래그먼트(Fragment)는 액티비티 내에서 동작하는 UI 단위로, 유사하지만 독립적인 생명주기를 가집니다.
주요 메서드는 다음과 같습니다.

  • onAttach()
  • onCreateView()
  • onViewCreated()
  • onPause()
  • onDestroyView()

복잡한 UI를 구성할 때 이 과정을 이해해야 오류 없는 화면 전환이 가능합니다.


Jetpack Compose와 생명주기

Jetpack Compose는 선언형 UI이지만, 여전히 LifecycleOwner 개념이 존재합니다.
rememberLifecycleObserver() 등을 활용해 컴포넌트의 상태를 안전하게 관리할 수 있습니다.


결론: Android 생명주기는 기본 중의 기본

Android 생명주기를 이해하는 것은 앱 개발의 출발점입니다.
이 개념이 확실히 잡혀야 데이터 유실, 화면 깜빡임, 크래시 등의 문제를 줄이고 안정적인 앱을 개발할 수 있습니다.

한 줄 요약:
“Android 생명주기를 이해하면 앱의 품질이 달라집니다.”

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤