Perché il ViewModel sopravvive alla rotazione
Mantenga lo stato durante i cambiamenti di configurazione.
Perché il ViewModel sopravvive alla rotazione è una lezione Jetpack Compose Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Jetpack Compose Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Jetpack Compose Academy include 4 lezioni in totale.
Il problema della rotazione
Ruotando lo schermo, Android distrugge la Activity e cancella ogni stato che vi era memorizzato. Il contatore, il testo e la posizione di scorrimento scompaiono tutti. 😵
Modifiche alla configurazione
La rotazione è una delle numerose modifiche alla configurazione: il cambio del tema, della lingua e il ridimensionamento della finestra ricreano lo schermo allo stesso modo.
Entra in scena ViewModel
Un ViewModel è una classe progettata per contenere lo stato della UI oltre la durata della Activity a cui serve, così una rotazione non elimina più i dati.
class CounterViewModel : ViewModel() {
var count = 0
}Legato alla schermata, non alla Activity
Il ViewModel è associato al lifecycle owner della schermata, quindi la stessa istanza viene restituita alla Activity ricreata invece di crearne una nuova.
Come sopravvive
Android conserva il ViewModel in un archivio mantenuto durante la modifica della configurazione, poi lo ricollega automaticamente alla Activity appena creata.
Quando viene eliminato
Un ViewModel rimane in vita finché la schermata non è realmente terminata. Quando l’utente abbandona definitivamente la schermata, viene eseguito onCleared(), così può rilasciare le risorse.
override fun onCleared() {
// cancel jobs, close streams
}Non è adatto a tutto
Il ViewModel sopravvive alla rotazione, ma non alla terminazione del processo. Per questo caso, lo abbini a SavedStateHandle, così i valori importanti potranno essere ripristinati in seguito.
Aggiungere la dipendenza
Il supporto per ViewModel è fornito dalle librerie lifecycle. Aggiunga l’artefatto lifecycle-viewmodel-compose, così Compose potrà ottenere facilmente un ViewModel.
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.8.0")Separazione delle responsabilità
Oltre a sopravvivere alle ricreazioni, un ViewModel mantiene la logica fuori dalla UI. Le Composable rimangono concentrate sul disegno, mentre il ViewModel possiede lo state.
Un modello mentale
Immagini il ViewModel come un discreto direttore di scena: la Activity va e viene, ma il direttore mantiene pronto lo stato dello spettacolo per rappresentarlo di nuovo.
Perché è importante
Sopravvivere alla rotazione significa che gli utenti non perdono mai i progressi durante un’attività. Questa affidabilità è la base di ogni app Compose robusta. ✨
Verifica rapida
Verifichi di aver compreso perché un ViewModel sopravvive a una rotazione.
Riepilogo
La rotazione ricrea la Activity, ma un ViewModel sopravvive alle modifiche della configurazione e viene ricollegato, mantenendo intatto lo stato della UI e la logica fuori dalla UI.
Impara Kotlin con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 30
- Lezioni
- 120
Domande Frequenti
La lezione «Perché il ViewModel sopravvive alla rotazione» è gratuita?
Sì — il testo completo di «Perché il ViewModel sopravvive alla rotazione» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Jetpack Compose Academy, passa a CoddyKit PRO. Il corso Jetpack Compose Academy include 4 lezioni in totale.
Cosa imparerò in «Perché il ViewModel sopravvive alla rotazione»?
Mantenga lo stato durante i cambiamenti di configurazione. Eserciti Jetpack Compose Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Jetpack Compose Academy?
Non è richiesta alcuna esperienza precedente. Jetpack Compose Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Perché il ViewModel sopravvive alla rotazione»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Jetpack Compose Academy?
Sì. Ogni lezione Jetpack Compose Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Perché il ViewModel sopravvive alla rotazione
- viewModel() in una Composable
- Modellare una classe dati UiState
- collectAsStateWithLifecycle