기본적으로 상태 생성은 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 |
|
스트림 API |
|
원샷 및 스트림 API |
|