• 목록 (128)
    • Android (62)
    • Back-End (2)
    • Java (3)
    • Kotlin (16)
    • CS (7)
    • 개발 서적 (12)
    • 문제 풀이 (26)

최근 글

티스토리

전체 방문자
오늘
어제
hELLO · Designed By 정상우.
MJ_94
Android

[Android] Compose 런타임 - (2)

Android

[Android] Compose 런타임 - (2)

2024. 11. 26. 16:53

변경 목록

Composition이 발생할 때마다 소스의 Composable 함수들이 실행되고 방출된다.

방출이라는 의미는 슬롯 테이블을 업데이트하고, 구체화된 트리를 만들기 위해 궁극적으로 지연 중인 변경 사항을 생성하는 것의 의미한다.

이렇게 생성된 변경 사항들은 목록의 형태로 저장되며 슬롯 테이블에 이미 저장되어 있는 값을 바탕으로 한다.

즉, Composable 함수가 실행될 때마다 슬롯 테이블을 확인하고, 현재 사용 가능한 정보에 따라 지연 중인 변경 사항을 생성하고 해당 변경 사항을 모두 변경 목록에 추가한다.

그때가 슬롯 테이블을 composition의 최신 정보로 업데이트 하는 순간이고, 단순히 실행되길 기다리는 (지연된) 작업을 사전에 생성해 두는 것만으로 방출 과정을 매우 빠르게 만든다.

Recomposer는 이 과정 처리를 담당하는데, 어떤 스레드에서 composition, recomposition 할지 그리고 변경 목록에 있는 변경 사항을 적용하기 위해 어떤 스레드를 사용할지 결정한다.

변경사항을 적용하기 위한 스레드는 LaunchedEffect가 사이드 이펙트를 실행하기 위해 사용하는 디폴트 컨텍스트가 되기도 한다.

이를 통해 변경 사항이 어떤 방식으로 저장되고, 지연되고, 반영되는지에 대해 좀 더 명확하게 이해할 수 있다.

Composer

윗 글에서도 언급된 주입된 Composer는 우리가 작성한 Composable 함수를 Compose Runtime에 연결하는 역할을 한다. 앞서 Compose Compiler 포스팅에서도 $composer가 어떻게 주입되는지 다루었기 때문에 이 정도만 복기하고 넘어간다.

저작자표시 비영리 변경금지 (새창열림)

'Android' 카테고리의 다른 글

[Android] Compose 런타임 - (4)  (0) 2024.11.28
[Android] Compose 런타임 - (3)  (0) 2024.11.27
[Android] Compose 런타임 - (1)  (0) 2024.11.25
[Android] Compose 컴파일러 - (8)  (0) 2024.11.22
[Android] Compose 컴파일러 - (7)  (0) 2024.11.21
  • 변경 목록
  • Composer
'Android' 카테고리의 다른 글
  • [Android] Compose 런타임 - (4)
  • [Android] Compose 런타임 - (3)
  • [Android] Compose 런타임 - (1)
  • [Android] Compose 컴파일러 - (8)
MJ_94
MJ_94
안드로이드, 개발 관련 기술 블로그

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.