Zustandsproduktion in der UI (Views)

Konzepte und Jetpack Compose-Implementierung

Grundsätzlich ist die Statusgenerierung die inkrementelle Anwendung von Änderungen am UI-Status. Der Status ist immer vorhanden und ändert sich aufgrund von Ereignissen. Die Unterschiede zwischen Ereignissen und Status sind in der folgenden Tabelle zusammengefasst:

Ereignisse

Bundesland

Vorübergehend, unvorhersehbar und nur für einen begrenzten Zeitraum.

Immer vorhanden.

Die Eingaben der Statusgenerierung.

Die Ausgabe der Statusgenerierung.

Das Produkt der Benutzeroberfläche oder anderer Quellen.

Wird von der Benutzeroberfläche verwendet.

Ereignisse können aus folgenden Quellen stammen:

  • Nutzer: Wenn sie mit der Benutzeroberfläche der App interagieren.
  • Andere Quellen für Zustandsänderungen: APIs, die App-Daten aus UI-, Domain- oder Datenschichten wie Snackbar-Timeout-Ereignissen, Anwendungsfällen oder Repositorys präsentieren.

Produktions-APIs

Je nach Phase der Pipeline werden zwei Haupt-APIs für die Statusgenerierung verwendet:

Pipelinestatus

API

Eingabe

Sie sollten asynchrone APIs verwenden, um Aufgaben außerhalb des UI-Threads auszuführen, damit die Benutzeroberfläche nicht ruckelt. Beispiele hierfür sind Coroutines oder Flows in Kotlin und RxJava oder Callbacks in der Java-Programmiersprache.

Ausgabe

Sie sollten APIs für beobachtbare Datenhalter verwenden, um die Benutzeroberfläche bei Zustandsänderungen zu invalidieren und neu zu rendern. Beispiele: StateFlow oder LiveData. Observable-Dateninhaber sorgen dafür, dass die Benutzeroberfläche immer einen UI-Zustand hat, der auf dem Bildschirm angezeigt werden kann.

Von den beiden hat die Wahl der asynchronen API für die Eingabe einen größeren Einfluss auf die Art der Pipeline für die Statusgenerierung als die Wahl der beobachtbaren API für die Ausgabe. Das liegt daran, dass die Eingaben die Art der Verarbeitung bestimmen, die auf die Pipeline angewendet werden kann.

Zusammenstellung der Produktionspipeline

In den nächsten Abschnitten werden die Techniken zur Statusgenerierung beschrieben, die sich am besten für verschiedene Eingaben eignen, sowie die entsprechenden Ausgabeprogrammierschnittstellen. Jede Pipeline zur Statusgenerierung ist eine Kombination aus Ein- und Ausgaben und sollte folgende Eigenschaften haben:

  • Lebenszyklusbewusst: Wenn die Benutzeroberfläche nicht sichtbar oder aktiv ist, sollte die Pipeline zur Statusgenerierung keine Ressourcen verbrauchen, sofern dies nicht explizit erforderlich ist.
  • Einfache Verarbeitung: Die UI sollte den erstellten UI-Status problemlos rendern können. Die Überlegungen für die Ausgabe der Pipeline zur Statusgenerierung variieren je nach View-API, z. B. dem View-System oder Jetpack Compose.

Ausgabetypen in Pipelines für die Statusgenerierung

Die Auswahl der Ausgabe-API für den UI-Status und die Art der Darstellung hängen weitgehend von der API ab, die Ihre App zum Rendern der Benutzeroberfläche verwendet. In Android-Apps können Sie entweder Views oder Jetpack Compose verwenden. Dazu gehören:

In der folgenden Tabelle finden Sie eine Zusammenfassung der APIs, die Sie für Ihre State-Produktionspipeline verwenden sollten, wenn Sie das Views-Framework nutzen:

Eingabe

Ausgabe

One-Shot-APIs

StateFlow oder LiveData

Stream APIs

StateFlow oder LiveData

One-Shot- und Streaming-APIs

StateFlow oder LiveData