Compose LazyList, stable 상태 관리가 성능을 좌우한다!

by DD
7개월 전
조회수 10

Compose LazyList에서 key 사용과 stable 상태 관리가 중요함을 설명

UnstableSelectItem 사용 시, 모든 아이템이 recomposition 되는 문제 발생

StableSelectItem 사용 시, 변경된 아이템만 recomposition 되어 성능 향상

LazyList의 Recomposition 최적화

LazyList에서 key를 지정하면 아이템의 변경을 효율적으로 감지한다. 구체적으로, UnstableSelectItem 사용 시, 객체 인스턴스 변경으로 인해 모든 아이템이 recomposition 된다. 따라서 @Stable 어노테이션과 mutableStateOf를 활용하여 상태 변경을 감지해야 한다.

Unstable vs Stable: 성능 비교

UnstableSelectItem은 객체 생성 시마다 새로운 인스턴스를 생성하여 모든 아이템의 recomposition을 유발한다. 반면, data classStableSelectItem은 변경된 아이템만 recomposition을 발생시켜 성능을 향상시킨다. 따라서 상태 관리 방식에 따라 UI 렌더링 성능이 크게 달라진다.

Stable 상태 유지를 위한 전략

Compose에서 Stable 상태를 유지하기 위해 data class 또는 @Stable 어노테이션과 mutableStateOf를 사용한다. 구체적으로, ImmutableList와 함께 사용하면 UI 업데이트 시 불필요한 recomposition을 방지한다. 따라서 상태 관리 전략을 통해 UI 응답성을 개선할 수 있다.

Compose에서 Stable을 가볍게 보면 안 되는 이유: LazyList 안정성 가이드 Part 2