| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- 영어독립365
- Android WebView
- android recyclerview
- WebView
- 안드로이드 카카오 로그인
- coroutine
- Android ProgressBar
- Android Jetpack
- 코틀린 코루틴
- Android
- 프로그래머스 알고리즘
- OkHttp Interceptor
- 영어공부
- 66챌린지
- Android Interceptor
- Android Navigation
- Java
- 카카오 알고리즘
- Kotlin FCM
- Kotlin
- 습관만들기
- MVP Architecture
- Android ViewPager2
- Android 12 대응
- 알고리즘 자바
- 안드로이드 갤러리 접근
- scope function
- 안드로이드
- DataBinding
- Android 12
- Today
- Total
나미래 Android 개발자
[Android Compose] Composition·Composable·Composition 관계 정리 본문
[Android Compose] Composition·Composable·Composition 관계 정리
Moimeme Futur 2025. 11. 19. 20:54Composition·Composable·Composition 관계 정리
Jetpack Compose를 처음 학습하면 가장 먼저 마주하는 개념이 있다. 바로 Compose, Composable, Composition 이 세 가지다.
단어 형태도 비슷하고, 공식 문서에서도 계속 반복되기 때문에 정확히 구분해야지만 Jetpack Compose 전반의 구조가 선명해진다.
1. 관계 개요
다음 그림은 Compose, Composable, Composition 관계를 나타낸 것이다.

Compose는 전체 UI 시스템을 관리하며, 그 내부에는 여러 개의 Composition이 동시에 존재할 수 있다.
각 Composition은 하나의 setContent {} 호출 또는 하나의 ComposeView를 통해 생성되며, 해당 UI를 구성하는 Composable 함수들의 트리 구조를 유지한다.
그림에서 볼 수 있듯이
- Compose: 전체 Composition들을 감싸고 관리하는 최상위 컨트롤러
- Composition: Composable 함수들이 실제로 실행되어 만들어진 UI 트리 구조
- Composable: UI를 선언하는 함수이며 Composition 내부에서는 노드 형태로 배치되어 트리를 구성
즉, Compose가 Composable을 실행하면 Composition이 만들어지고, 이 Composition들을 통합적으로 관리하는 시스템이 Compose이다.
2. Compose: 전체를 관리하는 시스템(런타임 + 프레임워크)
Compose는 Jetpack Compose UI Toolkit의 핵심 엔진으로 다음과 같은 역할을 한다.
- Composable 실행: Composable 함수를 실제로 실행해 UI 트리 구조를 분석한다.
- Composition 생성 및 관리: Composable의 실행 결과를 UI 트리 구조(Composition)으로 유지한다.
- Recomposition 관리:
State변화를 감지하고 해당State를 직접적으로 사용하는 Composable만 다시 실행하도록 스케줄링한다.
즉, Compose는 UI 선언부터 상태 기반 업데이트까지 모든 과정을 관리하는 중앙 컨트롤러다.
3. Composable: UI를 선언하는 함수(설계도)
Composable은 @Composable 어노테이션을 가진 UI 선언 함수이다.
다시 말해 Composable은 "무엇을 그릴지 설명"하는 것이다.
4. Composition: Composable 실행 결과로 만들어진 UI 트리
Composition은 Composable을 실행해 얻은 실제 UI 구조를 담는 트리다.
@Composable
fun HomeScreen() {
Column {
TopBanner()
HomeMenu()
Navigation()
}
}
예를 들어 HomeScreen() 내부에 TopBanner(), HomeMenu(), Navigation()을 실행하면 Composition은 다음과 같은 트리를 관리한다.
HomeScreen
└── Column
├── TopBanner
├── HomeMenu
└── Navigation추가적으로 Composition은 다음과 같은 특징을 갖는다.
setContent {}호출당 Composition 1개 생성- 최초에 Initial Composition 생성
- 그 이후에는 Recomposition으로만 업데이트
'안드로이드 > Jetpack Compose' 카테고리의 다른 글
| [Jetpack Compose] Recomposition, 왜 Jetpack Compose는 순수한 함수만 허용하는가? (0) | 2025.11.16 |
|---|
