UI 상태 생성 (뷰)

개념 및 Jetpack Compose 구현

기본적으로 상태 생성은 UI 상태에 변경사항을 점진적으로 적용하는 것입니다. 상태는 항상 존재하며 이벤트로 인해 변경됩니다. 이벤트와 상태의 차이점은 아래 표에 요약되어 있습니다.

이벤트

상태

일시적이고 예측할 수 없으며 일정 기간 존재합니다.

항상 존재합니다.

상태 생성의 입력입니다.

상태 생성의 출력입니다.

UI 또는 기타 소스의 제품입니다.

UI에서 사용합니다.

이벤트는 다음에서 발생할 수 있습니다.

  • 사용자: 사용자가 앱의 UI와 상호작용할 때
  • 상태 변경의 다른 소스: UI 또는 도메인, 데이터 영역(스낵바 시간 제한 이벤트 또는 사용 사례, 저장소 등)의 앱 데이터를 각각 표시하는 API

상태 생성 API

진행 중인 파이프라인 단계에 따라 상태 생성에 사용되는 기본 API는 2가지입니다.

파이프라인 단계

API

입력

UI 버벅거림을 방지하려면 UI 스레드 밖에서 작업을 실행하는 비동기 API를 사용해야 합니다. 예를 들어 Kotlin의 코루틴 또는 Flow, 자바 프로그래밍 언어의 RxJava 또는 콜백이 있습니다.

출력

상태가 변경될 때 UI를 무효화하고 다시 렌더링하려면 관찰 가능한 데이터 홀더 API를 사용해야 합니다. 예를 들어 StateFlow 또는 LiveData가 있습니다. 관찰 가능한 데이터 홀더는 UI에 항상 화면에 표시할 UI 상태가 있음을 보장합니다.

이 두 가지 중에서 입력용 비동기 API 선택이 출력용 관찰 가능한 API 선택보다 상태 생성 파이프라인의 특성에 더 큰 영향을 미칩니다. 이는 입력이 파이프라인에 적용될 수 있는 처리의 종류를 결정하기 때문입니다.

상태 생성 파이프라인 어셈블리

다음 섹션에서는 다양한 입력에 가장 적합한 상태 생성 기법과, 일치하는 출력 API를 다룹니다. 각 상태 생성 파이프라인은 입력과 출력의 조합이며 다음과 같아야 합니다.

  • 수명 주기 인식: UI가 표시되거나 활성 상태가 아닌 경우 상태 생성 파이프라인은 명시적으로 필요하지 않은 한 어떤 리소스도 사용해서는 안 됩니다.
  • 사용하기 쉬움: UI는 생성된 UI 상태를 쉽게 렌더링할 수 있어야 합니다. 상태 생성 파이프라인 출력에 관한 고려사항은 뷰 시스템이나 Jetpack Compose와 같은 여러 뷰 API에 따라 다릅니다.

상태 생성 파이프라인의 출력 유형

UI 상태 출력 API의 선택과 표시 방법의 특성은 대체로 앱이 UI를 렌더링하는 데 사용하는 API에 따라 다릅니다. Android 앱에서는 뷰 또는 Jetpack Compose를 사용하도록 선택할 수 있습니다. 고려사항은 다음과 같습니다.

다음 표에는 뷰 프레임워크를 사용할 때 상태 생성 파이프라인에 사용할 API가 요약되어 있습니다.

입력

출력

원샷 API

StateFlow 또는 LiveData

스트림 API

StateFlow 또는 LiveData

원샷 및 스트림 API

StateFlow 또는 LiveData