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:
- Lettura dello stato in modo da riconoscere il ciclo di vita.
- Se lo stato deve essere esposto in uno o più campi del titolare dello stato.
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 |
|
API di streaming |
|
API one-shot e di streaming |
|