Jetpack Compose 수명 주기

박규훤·2022년 4월 27일
0

Jetpack Compose를 효율적으로 사용하기 위해 알고 신경써야 하는 부분을 정리해보았다.

Composable의 수명 주기


Composable이 실행되어 추적되면 이후로 해당 Composable이 사라질 때까지 recompose 된다.

Screen이 화면에 보이기 시작할 때부터 해당 Screen에서 벗어날 때까지 recomposition이 반복된다고 보면 될 것 같다.

Recompose 시점

Composable에서 참조하는 state가 변경되면 화면이 recompose 되는데, 해당 state를 사용하는 composable이나 건너뛸 수 없는 composable을 recompose 한다.

조건을 만족하는 일부 composable은 recompose 시점에 recompose 되지 않고 이전 인스턴스를 그대로 사용한다. 여기에서 조건은 Composable 함수의 파라미터가 모두 Stable하고 변경되지 않은 경우를 말한다.

Stable한 파라미터는 equals로 비교할 수 있는 primitive type이나, 람다와 같이 변경되지 않는 타입을 뜻한다. 이전 상태의 composable에서 사용된 값과 현재의 값이 equals로 같으면 recompose를 건너뛴다.

위의 그림에서는 LoginInput이 파라미터를 가지고 있지 않다. 즉, recompose 시점에 변경되지 않기 때문에 해당 composable은 recompose를 건너뛰어도 된다고 판단한다.

Compose가 stable하다고 추론할 수 없는 값은 @Stable 어노테이션을 통해 인위적으로 stable함을 명시할 수 있다. Stable하다고 추론할 수 없는 값은 대표적으로 인터페이스가 있다.

Recomposition 확인

Recompose는 해당 composable이 다시 실행되는 것을 뜻하므로 해당 composable 내에서 로그를 출력하면 recompose 될 때마다 로그가 찍히는 것을 확인할 수 있다.

효율적으로 Compose 사용하기

Compose를 효율적으로 사용한다는 것은 불필요한 recompose를 줄이는 것이다.

변경되는 Composable과 변경되지 않는 Composable을 분리하여 작성하고, 값이 바뀌는지 확인해야 할 것 같다.

profile
개발팀의 소방수

0개의 댓글