Produzione stato UI (Views)

Concetti e implementazione di Jetpack Compose

Fondamentalmente, la produzione di stati è l'applicazione incrementale delle modifiche allo stato dell'UI. Lo stato esiste sempre e cambia in seguito agli eventi. Le differenze tra eventi e stati sono riassunte nella tabella seguente:

Eventi

Stato

Transitori, imprevedibili ed esistenti per un periodo di tempo limitato.

Esiste sempre.

Gli input della produzione di stati.

L'output della produzione di stati.

Il prodotto dell'UI o di altre origini.

Viene utilizzato dall'UI.

Gli eventi possono provenire da:

  • Utenti: mentre interagiscono con l'UI dell'app.
  • Altre origini di modifica dello stato: API che presentano i dati dell'app dai livelli UI, dominio o dati, come eventi di timeout della snackbar, casi d'uso o repository, rispettivamente.

API di produzione di stati

Esistono due API principali utilizzate nella produzione di stati, a seconda della fase della pipeline in cui ti trovi:

Fase della pipeline

API

Input

Dovresti utilizzare le API asincrone per eseguire il lavoro al di fuori del thread dell'interfaccia utente, in modo da evitare blocchi dell'interfaccia utente. Ad esempio, Coroutines o Flows in Kotlin e RxJava o callback nel linguaggio di programmazione Java.

Output

Dovresti utilizzare le API dei titolari di dati osservabili per invalidare e riprodurre l'UI quando lo stato cambia. Ad esempio, StateFlow o LiveData. I titolari di dati osservabili garantiscono che l'UI abbia sempre uno stato dell'UI da visualizzare sullo schermo.

Tra le due, la scelta dell'API asincrona per l'input ha una maggiore influenza sulla natura della pipeline di produzione di stati rispetto alla scelta dell'API osservabile per l'output. Questo perché gli input determinano il tipo di elaborazione che può essere applicato alla pipeline.

Assemblaggio della pipeline di produzione di stati

Le sezioni successive riguardano le tecniche di produzione di stati più adatte a vari input e le API di output corrispondenti. Ogni pipeline di produzione di stati è una combinazione di input e output e deve essere:

  • Riconoscimento del ciclo di vita: nel caso in cui l'UI non sia visibile o attiva, la pipeline di produzione di stati non deve consumare risorse, a meno che non sia esplicitamente richiesto.
  • Facile da utilizzare: l'UI deve essere in grado di eseguire facilmente il rendering dello stato dell'UI prodotto. Le considerazioni per l'output della pipeline di produzione di stati variano a seconda delle diverse API View, come il sistema View o Jetpack Compose.

Tipi di output nelle pipeline di produzione di stati

La scelta dell'API di output per lo stato dell'UI e la natura della sua presentazione dipendono in gran parte dall'API utilizzata dall'app per eseguire il rendering dell'UI. Nelle app per Android, puoi scegliere di utilizzare le visualizzazioni o Jetpack Compose. Le considerazioni includono:

La tabella seguente riassume le API da utilizzare per la pipeline di produzione di stati quando utilizzi il framework Views:

Input

Output

API one-shot

StateFlow o LiveData

API di streaming

StateFlow o LiveData

API one-shot e di streaming

StateFlow o LiveData