본문 바로가기
카테고리 없음

Jetpack Compose 생명주기

by h4r3 2025. 1. 21.
반응형

Jetpack Compose는 Android의 최신 UI 툴킷으로, 선언형 UI 패러다임을 채택하여 전통적인 XML 기반 View 시스템과 차별화됩니다. 본 가이드에서는 Jetpack Compose의 생명주기를 자세히 설명하고, 기존 XML 기반 개발과의 차이점을 비교하며, 장단점을 분석합니다.


1. Jetpack Compose 생명주기 이해

Jetpack Compose의 생명주기는 Composable 함수의 호출 및 재구성(Recomposition) 과정을 중심으로 작동합니다. 주요 생명주기 이벤트는 다음과 같습니다.

Compose 생명주기 단계

  1. Initial Composition (초기 구성)
    • Composable 함수가 처음 호출될 때 실행됨.
    • UI 요소가 초기 생성되며 상태(state)가 설정됨.
  2. Recomposition (재구성)
    • 상태(state)의 변경이 발생할 때 Compose는 해당 Composable 함수를 다시 실행.
    • UI의 변경이 필요한 부분만 효율적으로 업데이트.
  3. Disposal (처리 해제)
    • Composable이 Composition에서 제거될 때 실행.
    • 리소스 정리 등의 작업을 수행할 수 있음.

Compose 생명주기 흐름도

Initial Composition → UI State Update → Recomposition → Disposal

생명주기 이벤트 감지 방법

Compose에서는 LaunchedEffect, DisposableEffect와 같은 효과(Effect) API를 활용하여 생명주기 이벤트를 처리할 수 있습니다.

예제 코드

@Composable
fun MyComposable() {
    LaunchedEffect(Unit) {
        // 초기 진입 시 실행 (onCreate에 해당)
        println("Composable Created")
    }

    DisposableEffect(Unit) {
        onDispose {
            // Composable이 제거될 때 실행 (onDestroy에 해당)
            println("Composable Destroyed")
        }
    }
}

2. XML 기반 View 시스템과의 비교

항목 Jetpack Compose XML 기반 View 시스템

UI 선언 방식 선언형 (Declarative) 명령형 (Imperative)
생명주기 관리 Composable 호출 및 상태 기반 Activity/Fragment 생명주기 의존
재구성(Recomposition) 상태 변화 시 필요한 부분만 업데이트 전체 View 갱신 필요
코드 유지보수성 높은 재사용성과 간결한 코드 XML과 Kotlin 코드 분리
성능 효율적인 상태 관리 및 성능 최적화 레이아웃 트리 복잡성 증가

 


3. Jetpack Compose의 장단점

장점 / 단점

간결한 코드 학습 곡선
재사용성 높은 모듈화 초기 빌드 시간 증가
성능 최적화 디버깅 어려움
Android View와 호환  

4. MainActivity와 Compose 생명주기

Jetpack Compose는 Activity의 생명주기와 연동되며, 다음과 같은 순서로 동작합니다.

  1. onCreate() → Compose 초기 구성 수행 (Initial Composition)
  2. onStart() → Compose UI가 화면에 보이기 시작
  3. onResume() → 사용자 상호작용 가능, 이후 상태 변경 시 재구성 발생 (Recomposition)
  4. onPause() → UI 상태 보존
  5. onStop() → Compose UI 제거 가능 (Disposal 시작)
  6. onDestroy() → Compose 리소스 해제 (Disposal 완료)

MainActivity와 Compose 생명주기 관계 흐름도

Activity 생명주기:
  onCreate → onStart → onResume → onPause → onStop → onDestroy

Compose 생명주기:
  [onCreate ~ onStart] → Initial Composition
  [onResume 이후] → Recomposition
  [onStop ~ onDestroy] → Disposal

5. 마무리

Jetpack Compose는 선언형 UI를 통해 보다 직관적이고 효율적인 Android 앱 개발을 가능하게 합니다. 기존 XML 기반 View 시스템과 비교하여 코드의 간결성, 유지보수성, 성능 최적화 측면에서 많은 이점을 제공하지만, 학습 비용 및 디버깅 어려움 등의 단점도 고려해야 합니다.

반응형