이슈

컴포즈 함수를 다루다 보면 필연적으로 만나게 되는 @Stable 어노테이션이 있다.

온기 프로젝트 이전에도 대충 “스마트 리컴포지션 최적화” 정도로 알고 있었다.

다만.. 프로젝트를 진행하면서 왜, 언제, 어떻게 쓰는지 알아야 잘 최적화 할 수 있다는 생각이 들어 테스트를 해봐야 겠다고 생각했다.

학습 : 종류

리컴포지션의 최적화를 위해 사용되는 어노테이션은 두 가지가 있음을 확인할 수 있었다.

@Stable @Immutable https://developer.android.com/develop/ui/compose/performance/stability/fix?hl=ko&_gl=1*1kb79uw*_up*MQ

image.png

Compose 컴파일러는 Composable 함수의 매개변수들에 대해 두 가지로 분류한다.

Stable ↔ UnStable

stable의 종류로는 아래와 같다.

  1. 원시 타입의 래퍼 클래스
  2. String
  3. stable한 파라미터를 사용하는 람다함수
  4. val 키워드 (불변)

unStable한 종류는 stable 하지 않은 경우 전부 unStable하다고 정의된다.

예시로는 List<T>가 있다.