패스잇
모바일 개발 · 심화

Jetpack Compose에서 Recomposition의 동작 원리를 설명하고, 불필요한 Recomposition을 최소화하여 Compose UI 성능을 최적화하는 구체적인 전략들을 제시해 보세요.

힌트 · `remember` 사용, `stable` 타입 정의, `key` 활용, 람다 캡처링 방지 등을 고려해야 합니다. Compose 컴파일러 리포트를 분석하는 것도 중요합니다.

상태(State)불변성(Immutability)스키핑(Skipping)rememberderivedStateOf

모범답안

Jetpack Compose에서 Recomposition은 상태(State)가 변경되었을 때 UI를 업데이트하는 과정입니다. Compose는 변경된 부분만 다시 그리는 방식으로 동작하여 효율성을 높입니다.

Recomposition 최적화를 위해 몇 가지 전략을 사용할 수 있습니다. 첫째, remember를 사용하여 불필요한 객체 생성을 막고, 상태를 유지합니다. 둘째, stable 타입으로 정의된 데이터 클래스를 사용하여 Compose가 변경 여부를 더 정확하게 판단하도록 돕습니다. 셋째, key를 사용하여 특정 컴포저블이 업데이트되어야 하는지 명시적으로 지정할 수 있습니다. 넷째, 람다 캡처링을 최소화하여 불필요한 Recomposition을 방지합니다. 예를 들어, 람다 내에서 외부 상태를 직접 사용하는 대신, 필요한 값만 인자로 전달하는 것이 좋습니다.

마지막으로, Compose 컴파일러 리포트를 분석하여 어떤 컴포저블이 Recomposition을 유발하는지 파악하고, 개선점을 찾는 것이 중요합니다. derivedStateOf를 사용하여 특정 상태에 의존하는 값을 계산하고, 해당 값의 변경에 따라서만 Recomposition이 일어나도록 할 수도 있습니다. 이러한 전략들을 통해 Compose UI의 성능을 효과적으로 최적화할 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 Android / Kotlin 면접 질문

← Android / Kotlin 면접 질문 전체 보기