Создание состояния пользовательского интерфейса (представлений)

Концепции и реализация Jetpack Compose

По сути, создание состояния — это постепенное внесение изменений в состояние пользовательского интерфейса. Состояние существует всегда и изменяется в результате событий. Различия между событиями и состоянием суммированы в таблице ниже:

События

Состояние

Преходящие, непредсказуемые и существующие в течение конечного периода времени.

Существует всегда.

Производственные ресурсы государства.

Объем государственного производства.

Продукт пользовательского интерфейса или других источников.

Используется пользовательским интерфейсом.

События могут происходить из следующих источников:

  • Пользователи : В процессе взаимодействия с пользовательским интерфейсом приложения.
  • Другие источники изменения состояния : API, предоставляющие данные приложения из пользовательского интерфейса, предметной области или уровня данных, например, события истечения времени ожидания Snackbar, варианты использования или репозитории соответственно.

API для производства состояний

В зависимости от этапа конвейера обработки данных, в процессе создания состояния используются два основных API:

Этап трубопровода

API

Вход

Для обеспечения плавной работы интерфейса следует использовать асинхронные API для выполнения задач вне основного потока. Например, сопрограммы или потоки в Kotlin, а также RxJava или коллбэки в языке программирования Java.

Выход

Для аннулирования и повторной отрисовки пользовательского интерфейса при изменении состояния следует использовать API-интерфейсы, поддерживающие наблюдаемые данные. Например, StateFlow или LiveData. Наблюдаемые данные гарантируют, что пользовательский интерфейс всегда будет иметь состояние для отображения на экране.

Из двух вариантов выбор асинхронного API для ввода оказывает большее влияние на характер конвейера генерации состояния, чем выбор наблюдаемого API для вывода. Это связано с тем, что входные данные определяют тип обработки, которая может быть применена к конвейеру .

Государственная сборка производственного трубопровода

В следующих разделах рассматриваются методы генерации состояний, наиболее подходящие для различных входных данных, а также соответствующие API для обработки выходных данных. Каждый конвейер генерации состояний представляет собой комбинацию входных и выходных данных и должен соответствовать следующим требованиям:

  • Учет жизненного цикла : В случае, когда пользовательский интерфейс не виден или неактивен, конвейер обработки состояния не должен потреблять никаких ресурсов, если это явно не требуется.
  • Удобство использования : пользовательский интерфейс должен легко отображать созданное состояние. Вопросы, касающиеся вывода данных из конвейера создания состояния, будут различаться в зависимости от используемого API представления, например, системы представлений или Jetpack Compose.

Типы выходных данных в конвейерах государственного производства

Выбор API для вывода состояния пользовательского интерфейса и характер его представления во многом зависят от API, который ваше приложение использует для рендеринга интерфейса. В приложениях для Android вы можете использовать Views или Jetpack Compose. Здесь следует учитывать следующее:

В таблице ниже приведено краткое описание API, которые следует использовать для конвейера обработки состояния при применении фреймворка Views:

Вход

Выход

API-интерфейсы, работающие один раз

StateFlow или LiveData

API потоковой передачи

StateFlow или LiveData

API для однократных и потоковых запросов

StateFlow или LiveData