In questo articolo vedremo cos'è l'attributo ConfigChanges che si può impostare all'interno del file AndroidManifest.xml.
Maggiori informazioni si possono trovare a questo indirizzo (in inglese)
Alcune configurazioni del dispositivo possono cambiare durante l'uso dell'app (come l'orientamento dello schermo, la disponibilità della tastiera e quando l'utente attiva la modalità multi-finestra).
Quando si verifica una tale modifica, Android riavvia l'Activity in esecuzione (viene chiamato onDestroy(), seguito da onCreate()). Come si può vedere in questo articolo.
Il comportamento di riavvio è progettato per consentire all'applicazione di adattarsi alle nuove configurazioni ricaricando automaticamente l'applicazione con risorse alternative che corrispondono alla nuova configurazione del dispositivo.
Per gestire correttamente un riavvio, è importante che l'attività ripristini il suo stato precedente. È possibile utilizzare la funzione onSaveInstanceState(), ViewModel e salvataggio dati per salvare e ripristinare lo stato dell'interfaccia utente in seguito alle modifiche alla configurazione.
Per verificare che l'applicazione si riavvii con lo stato dell'applicazione intatto, è necessario richiamare le modifiche alla configurazione (come la modifica dell'orientamento dello schermo) durante l'esecuzione di varie attività nell'applicazione. L'applicazione dovrebbe essere in grado di riavviarsi in qualsiasi momento senza perdita di dati o stato dell'utente al fine di gestire eventi quali modifiche alla configurazione o quando l'utente riceve una telefonata in arrivo e quindi ritorna all'applicazione molto più tardi dopo che il processo dell'applicazione potrebbe essere stato distrutto.
Per maggiori informazioni su onSaveInstanceState() consultare questo articolo.
L'utilizzo dell'attributo ConfigChanges deve essere fatto all'interno del file AndroidManifest.xml contenuto all'interno della cartella manifest del progetto.
Per configurare questo attributo in modo che non venga ricaricata l'Activity quando si cambia orientamento dello schermo è sufficiente inserire questa riga di codice all'interno del tag activity Ecco il file AndroidManifest.xml l'attributo è stato inserito alla riga 13
In questo modo quando si orienta lo schermo da portrait (verticale) a landscape (orizzontale) o viceversa, l'Activity non verrà ricaricata e quindi non si perderanno i dati inseriti e/o calcoli effettuati. Questa soluzione può essere utile nel caso in qui la nostra app abbia un solo layout per ogni tipo di dispositivo e/o orientamento schermo altrimenti bisogna utilizzare onSaveInstanceState() come descritto in questo articolo
Per altri tipi di ConfigChanges consultare questa guida (in Inglese).
Ora, quando una di queste configurazioni cambia, l'Activity non si riavvia. Al contrario, l'Activity esegue una chiamata alla funzione onConfigurationChanged().
A questa funzione viene passato un oggetto Configuration che specifica la nuova configurazione del dispositivo. Leggendo i campi nella Configurazione, è possibile determinare la nuova configurazione e apportare le modifiche appropriate aggiornando le risorse utilizzate nella propria interfaccia. Nel momento in cui viene chiamato questo metodo, l'oggetto Risorse dell'attività viene aggiornato per restituire risorse in base alla nuova configurazione, in modo da poter ripristinare facilmente elementi dell'interfaccia utente senza riavviare l'attività.
Ad esempio, la seguente implementazione di onConfigurationChanged() verifica l'orientamento attuale del dispositivo: Ecco come si presenta il file MainActivity.kt
Maggiori informazioni si possono trovare a questo indirizzo (in inglese)
Alcune configurazioni del dispositivo possono cambiare durante l'uso dell'app (come l'orientamento dello schermo, la disponibilità della tastiera e quando l'utente attiva la modalità multi-finestra).
Quando si verifica una tale modifica, Android riavvia l'Activity in esecuzione (viene chiamato onDestroy(), seguito da onCreate()). Come si può vedere in questo articolo.
Il comportamento di riavvio è progettato per consentire all'applicazione di adattarsi alle nuove configurazioni ricaricando automaticamente l'applicazione con risorse alternative che corrispondono alla nuova configurazione del dispositivo.
Per gestire correttamente un riavvio, è importante che l'attività ripristini il suo stato precedente. È possibile utilizzare la funzione onSaveInstanceState(), ViewModel e salvataggio dati per salvare e ripristinare lo stato dell'interfaccia utente in seguito alle modifiche alla configurazione.
Per verificare che l'applicazione si riavvii con lo stato dell'applicazione intatto, è necessario richiamare le modifiche alla configurazione (come la modifica dell'orientamento dello schermo) durante l'esecuzione di varie attività nell'applicazione. L'applicazione dovrebbe essere in grado di riavviarsi in qualsiasi momento senza perdita di dati o stato dell'utente al fine di gestire eventi quali modifiche alla configurazione o quando l'utente riceve una telefonata in arrivo e quindi ritorna all'applicazione molto più tardi dopo che il processo dell'applicazione potrebbe essere stato distrutto.
Per maggiori informazioni su onSaveInstanceState() consultare questo articolo.
L'utilizzo dell'attributo ConfigChanges deve essere fatto all'interno del file AndroidManifest.xml contenuto all'interno della cartella manifest del progetto.
Per configurare questo attributo in modo che non venga ricaricata l'Activity quando si cambia orientamento dello schermo è sufficiente inserire questa riga di codice all'interno del tag activity Ecco il file AndroidManifest.xml l'attributo è stato inserito alla riga 13
In questo modo quando si orienta lo schermo da portrait (verticale) a landscape (orizzontale) o viceversa, l'Activity non verrà ricaricata e quindi non si perderanno i dati inseriti e/o calcoli effettuati. Questa soluzione può essere utile nel caso in qui la nostra app abbia un solo layout per ogni tipo di dispositivo e/o orientamento schermo altrimenti bisogna utilizzare onSaveInstanceState() come descritto in questo articolo
Per altri tipi di ConfigChanges consultare questa guida (in Inglese).
Ora, quando una di queste configurazioni cambia, l'Activity non si riavvia. Al contrario, l'Activity esegue una chiamata alla funzione onConfigurationChanged().
A questa funzione viene passato un oggetto Configuration che specifica la nuova configurazione del dispositivo. Leggendo i campi nella Configurazione, è possibile determinare la nuova configurazione e apportare le modifiche appropriate aggiornando le risorse utilizzate nella propria interfaccia. Nel momento in cui viene chiamato questo metodo, l'oggetto Risorse dell'attività viene aggiornato per restituire risorse in base alla nuova configurazione, in modo da poter ripristinare facilmente elementi dell'interfaccia utente senza riavviare l'attività.
Ad esempio, la seguente implementazione di onConfigurationChanged() verifica l'orientamento attuale del dispositivo: Ecco come si presenta il file MainActivity.kt
Download Project | ![]() |
Download file APK | ![]() |
Commenti
Posta un commento