0Pricing
Android Academy · 강의

리컴포지션 이해하기

Compose가 UI를 업데이트하는 방식을 알아보세요.

리컴포지션 이해하기은(는) CoddyKit의 무료 Android Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Android Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Android Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

재구성이란 무엇인가요?

재구성은 컴포저블이 읽은 상태가 변경될 때 Compose가 UI를 업데이트하기 위해 컴포저블 함수를 다시 실행하는 것입니다. 이를 통해 화면이 데이터와 동기화된 상태를 유지합니다.

상태 읽기로 트리거됩니다

Compose는 어떤 컴포저블이 어떤 상태를 읽는지 추적합니다. 상태 값이 변경되면 해당 상태를 읽은 컴포저블만 재구성되도록 예약됩니다.

스마트하고 선택적입니다

재구성은 선택적입니다. Compose는 가능한 한 적은 부분만 다시 실행하려고 합니다. 상태의 한 부분이 변경되어도 화면 전체를 다시 그리지 않고, 해당 상태에 의존하는 부분만 다시 그립니다.

건너뛰기

컴포저블의 입력이 변경되지 않았다면 Compose는 해당 컴포저블의 재실행을 완전히 건너뛸 수 있습니다. 따라서 복잡한 화면에서도 재구성 비용을 낮게 유지할 수 있습니다.

컴포저블은 자주 실행됩니다

재구성은 자주, 그리고 어떤 순서로든 발생할 수 있으므로 컴포저블은 안전하게 다시 실행될 수 있어야 합니다. 동일한 상태에서 여러 번 호출해도 동일한 UI가 만들어져야 합니다.

부수 효과를 피하세요

컴포저블 본문에서 직접 부수 효과(네트워크 호출, 파일 쓰기, 공유 변수 변경)를 수행하지 마세요. 재구성이 일어날 때마다 실행될 수 있습니다. 대신 상태와 효과 API를 사용하세요.

// BAD: runs on every recomposition
@Composable
fun Bad() {
    saveToDatabase()
    Text("Hi")
}

실행 순서에 의존하지 않기

컴포저블이 특정 순서로 또는 특정 스레드에서 실행된다고 가정할 수 없습니다. 각 호출을 독립적인 것으로 취급하세요. 이러한 자유가 Compose가 적극적으로 최적화할 수 있는 이유입니다.

읽는 경우와 읽지 않는 경우

상태가 변경될 때 재구성되는 것은 해당 상태를 읽는 컴포저블뿐입니다. Text가 count를 전혀 읽지 않는다면 count를 변경해도 해당 Text는 그대로 유지됩니다.

@Composable
fun Demo() {
    var count by remember { mutableStateOf(0) }
    Text("Static")          // never recomposes from count
    Text("Count: $count")    // recomposes when count changes
    Button(onClick = { count++ }) { Text("+") }
}

피해야 할 재구성 루프

컴포지션 중(이벤트 내부가 아닌 곳에서) 상태에 쓰면 무한 재구성 루프가 발생할 수 있습니다. 상태는 onClick과 같은 콜백에서만 업데이트하고, 본문에서 직접 업데이트하지 마세요.

자동으로 처리되는 것처럼 느껴집니다

개발자의 관점에서 재구성은 자동으로 처리됩니다. 상태를 기반으로 UI를 선언하고 콜백에서 상태를 변경하면 Compose가 올바른 컴포저블을 다시 실행합니다.

함께 적용하기

이 카운터는 재구성을 보여 줍니다. 탭하면 count가 변경되고, Compose가 이를 읽는 Text를 다시 실행하여 새 숫자를 표시합니다.

@Composable
fun Counter() {
    var count by remember { mutableStateOf(0) }
    Button(onClick = { count++ }) {
        Text(text = "Count: $count")
    }
}

빠른 확인

Compose는 언제 컴포저블을 재구성하나요?

복습

재구성의 핵심:

  • 상태가 변경되면 해당 상태를 읽는 컴포저블이 다시 실행됩니다.
  • 재구성은 선택적으로 이루어지며 변경되지 않은 컴포저블은 건너뛸 수 있습니다.
  • 컴포저블은 부수 효과가 없어야 하며 어떤 순서로든 안전하게 다시 실행될 수 있어야 합니다.

자주 묻는 질문

“리컴포지션 이해하기” 강의는 무료인가요?

네 — “리컴포지션 이해하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Android Academy 강의 전체를 잠금 해제할 수 있습니다. Android Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“리컴포지션 이해하기”에서 뭘 배우나요?

Compose가 UI를 업데이트하는 방식을 알아보세요. 브라우저에서 직접 실행하는 실습 코드로 Android Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Android Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Android Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“리컴포지션 이해하기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Android Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Android Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. remember와 mutableStateOf로 상태 관리하기
  2. 리컴포지션 이해하기
  3. 상태 끌어올리기
  4. rememberSaveable
← Android Academy(으)로 돌아가기