일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 대구맛집
- 수성구카페
- 지산동카페
- 코딩
- 안드로이드
- 개발자
- 안드로이드개발
- 안드로이드스튜디오
- 인스타핫플
- 파이썬
- 감성카페
- 동성로핫플
- 대구인스타핫플
- 대구핫플
- Android
- 애드센스
- 의무경찰
- 어플개발
- 범물동카페
- 애드몹
- 동성로맛집
- androidstudio
- 동성로카페
- 대구카페
- 수성구맛집
- 안드로이드앱개발
- 앱개발
- 코딩공부
- 안드로이드앱
- 범물동
Archives
- Today
- Total
Glacier's Daily Log
Compose의 리컴포지션 판단 메커니즘과 Stability 본문
반응형
Jetpack Compose는 Recomposition 최적화에 관심을 가지고 개발해야 완성도가 높은 결과물을 기대할 수 있다.
최적화 방안 중 하나인, Stability를 고려하는 방법에 대해 알아보자.
Compose는 Stability(안정성)와 Recomposability(리컴포지션 가능성)를 기반으로 효율적으로 리컴포지션을 수행한다.
1. Stability (안정성)
- Stability는 데이터가 불변(Immutable) 또는 변경이 없을 것으로 예측되는지를 나타냄.
- 안정성은 @Stable 어노테이션 또는 컴파일러 분석에 의해 결정됨.
- Stable Class:
- 객체의 상태가 변하지 않거나 변화를 잘 감지할 수 있는 클래스.
- Kotlin의 data class나 ImmutableList 같은 불변 객체가 이에 해당함.
- Unstable Class:
- 내부적으로 상태가 변할 수 있지만 Compose에 명시적으로 이를 알리지 않는 클래스.
- Stable Class:
2. Recomposition Skipping (리컴포지션 건너뛰기)
- Compose는 안정성을 확인하여 이전 데이터와 동일한 데이터라면 해당 Composable을 리컴포지션하지 않고 건너뛰는 최적화 작업을 진행.
- 만약 데이터가 Stable하고, 이전 데이터와 새로운 데이터가 같다면, == 비교를 통해 변화가 없음을 확인함.
- ImmutableList, ImmutableSet, ImmutableMap 등도 Stable 객체로 간주되므로 효율적으로 처리.
3. 그러면?
- 불필요한 var 사용 지양
- 컬렉션 사용시 불변 컬렉션 사용 검토 (ImmutableList, ImmutableMap 등..)
- 커스텀 객체에는 Stable 또는 Imutable 어노테이션을 사용하여 직접 마킹
- 변할 수 있는 객체에 Stable을 붙인다면, 상태변경이 안되는 이슈가 생길 수 있으니 신중하게 설계해야함.
다음에는, Strong Skipping Mode에 대해 알아보자.
반응형
'Coding > Android' 카테고리의 다른 글
Compose Strong Skipping Mode의 람다 메모라이제이션 기능 (0) | 2024.12.13 |
---|---|
Compose의 Strong Skipping Mode에 대해 (0) | 2024.12.13 |
[앱 개발 전문가] 기기 연동 안드로이드 앱을 개발해 드립니다. (BLE, MQTT, TCP, RTSP, PTZ, 클래식 블루투스 등) (4) | 2024.12.01 |
헷갈리는 Sealed, Open, Abstract Class를 정리해보자 (0) | 2024.09.26 |
코틀린 SAM-constructor 란? 그리고 코틀린에서 clickListener를 간단하게 쓸 수 있는 이유 (0) | 2024.04.09 |
Comments