Compose 안정성, 쉽게 보면 큰 코 다칩니다!
by DD
9개월 전
조회수 7
Compose에서 안정성(Stability)은 성능에 직접적인 영향을 미치는 핵심 요소임
@Stable, @Immutable 어노테이션 적용 시, recomposition skip 여부가 달라짐을 실험을 통해 확인
Strong Skipping Mode 활성화 시, unstable 객체는 인스턴스 동등성으로 비교됨
Compose Recomposition의 작동 원리
Compose는 안정성(Stability)을 기반으로 재구성(recomposition)을 최적화한다. 구체적으로, @Stable 어노테이션은 객체의 변경 여부를 판단하는 데 사용되며, 인스턴스 동등성(===) 또는 객체 동등성(equals())을 통해 skip 여부를 결정한다. 따라서 UI 성능 향상을 위해 안정적인 객체 설계를 해야 한다.
@Stable, @Immutable의 트레이드오프
@Stable과 @Immutable은 컴포지션 성능을 향상시키지만, 사용 시 주의가 필요하다. @Stable은 객체 동등성 비교를, @Immutable은 값 변경 불가 속성을 보장한다. 반면, 잘못 사용하면 예상치 못한 UI 업데이트 누락으로 이어질 수 있으므로, 데이터 무결성을 고려하여 적용해야 한다.
Compose 안정성 확보를 위한 실전 가이드
Compose에서 안정성을 확보하기 위해, 데이터 클래스(data class)와 불변 객체(immutable object)를 적극 활용해야 한다. 따라서, UI 모델(UiModel)을 설계할 때, 불필요한 재구성을 방지하기 위해 val 프로퍼티를 사용하고, 객체 동등성을 고려하여 설계해야 한다. 결과적으로 UI 응답성을 개선할 수 있다.