지식

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 생명주기를 이해하면 앱의 품질이 달라집니다.”

eorbaos1985

Recent Posts

Aluminium OS – 구글의 차세대 Android 기반 PC OS

Aluminium OS - Android가 PC로 향하는 이유와 의미 2025년 말, 구글이 내부 코드명 “Aluminium”로 불리는…

3개월 ago

2026년 기준중위소득 100% · 120% — 1~4인 가구 기준 완전정리

1. 2026년 기준중위소득이란? 2026년 기준중위소득은 대한민국 전체 가구의 중간 소득을 의미하며, 정부의 다양한 복지사업과 지원제도의…

3개월 ago

한국, 월드컵 2포트 진입 추진! 월드컵 2포트의 장단점 총정리

월드컵 2포트 진입, 왜 이렇게 중요한가? 한국 축구 대표팀이 월드컵 2포트 진입을 목표로 국제 A매치를…

3개월 ago

플러터 스키아 엔진 완전 이해: 왜 플러터는 스키아로 빠른 UI를 만드는가

플러터 스키아 엔진 완전 이해: 왜 플러터는 스키아로 초고속 UI를 구현할까 플러터(Flutter)는 단 하나의 코드베이스로…

3개월 ago

플러터 그리드 위젯 완벽 가이드: GridView로 반응형 UI 만들기

플러터 그리드 위젯 완벽 가이드 플러터(Flutter)는 하나의 코드베이스로 iOS, Android, Web까지 동시에 빌드할 수 있는…

3개월 ago

Flutter 생명주기 완벽 이해: 위젯의 생성부터 소멸까지 한눈에 정리

Flutter 생명주기란 무엇인가? **Flutter 생명주기(Lifecycle)**란, 앱 실행 중 위젯이 생성되고 사라지기까지의 전 과정을 의미합니다.즉, Flutter…

3개월 ago