Composable
- 컴포저블 함수에서 사용되는 어노테이션
- Jetpack Compose를 구성하는 함수의 이름
- 선언형 UI의 최소 단위
Composition
- 컴포저블 함수가 화면에 그려지기 위한 전체의 과정
- 제일 처음 그려지는 1회의 과정
Recomposition
- 컴포지션의 내용이 수정되어 화면의 내용을 고치는데 그 동작을 말함
Lifecycle
- compose는 각 인스턴스가 각자의 생명주기를 가진다
호출 사이트를 이용한 구분
@Composable
fun LoginScreen(showError: Boolean) {
if (showError) {
LoginError()
}
LoginInput() // This call site affects where LoginInput is placed in Composition
}
@Composable
fun LoginInput() { /* ... */ }
- showError이 true로 변경되어 리컴포지션이 발생해도 LoginInput이 새로운 인스턴스로 생성되지않는다
실행 순서를 통한 구분
@Composable
fun MoviesScreen(movies: List<Movie>) {
Column {
for (movie in movies) {
// MovieOverview composables are placed in Composition given its
// index position in the for loop
MovieOverview(movie)
}
}
}
- 순서를 통해 데이터를 추가하는 경우 인스턴스가 순서에 맞게 생성된다
- 중간에 내용이 추가되거나 제일 처음에 추가하는 경우에는 모든 인스턴스가 리컴포지션됨!
키 값을 이용한 구분
- 식별자를 이용해 구분한다면 리스트에 제일 처음에 데이터가 추가되어도 전체적인 Recomposition을 하지 않는다