WebView
è un componente di uso comune che offre un sistema avanzato per la gestione degli stati. Un WebView
deve mantenere il proprio stato e la posizione di scorrimento durante le modifiche alla configurazione. Un
WebView
può perdere la posizione di scorrimento quando l'utente ruota il dispositivo o apre
un telefono pieghevole, il che costringe l'utente a scorrere di nuovo dalla parte superiore del
WebView
alla posizione di scorrimento precedente.
WebView
è bravo a gestire il proprio stato. Puoi sfruttare questa qualità
gestendo il maggior numero possibile di modifiche di configurazione per ridurre al minimo il numero di volte
in cui viene ricreato un WebView
. L'app deve gestire le modifiche alla configurazione perché la ricreazione delle attività (il modo in cui il sistema gestisce le modifiche alla configurazione) ricrea il WebView
, che perde lo stato.WebView
Gestisci stato
Evita di ricreare Activity
il più possibile durante le modifiche alla configurazione e lascia che WebView
venga invalidato in modo che possa ridimensionarsi mantenendo il proprio stato.
Per gestire lo stato di WebView
:
- Dichiarare le modifiche alla configurazione gestite dalla tua app
- Annullare lo stato
WebView
1. Aggiungere modifiche di configurazione al file AndroidManifest.xml
dell'app
Evita la ricreazione delle attività specificando le modifiche alla configurazione gestite dalla tua app (anziché dal sistema):
<activity
android:name=".MyActivity"
android:configChanges="screenLayout|orientation|screenSize
|keyboard|keyboardHidden|smallestScreenSize" />
2. Annullare WebView
ogni volta che la tua app riceve una modifica alla configurazione
Kotlin
override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) webView.invalidate() }
Java
@Override public void onConfigurationChanged(@NonNull Configuration newConfig) { super.onConfigurationChanged(newConfig); webview.invalidate(); }
Questo passaggio si applica solo al sistema di visualizzazione, poiché Jetpack Compose non deve invalidare nulla per ridimensionare correttamente gli elementi Composable
. Tuttavia, Compose ricrea spesso un WebView
se non viene gestito correttamente.
Punti chiave
android:configChanges
: attributo dell'elemento manifest<activity>
. Elenca le modifiche alla configurazione gestite dall'attività.View#invalidate()
: metodo che causa il ricalcolo di una vista. Ereditata daWebView
.
Risultati
I componenti WebView
dell'app ora mantengono il loro stato e la posizione di scorrimento anche dopo più modifiche alla configurazione, dal ridimensionamento alle modifiche dell'orientamento fino all'apertura e alla chiusura del dispositivo.
Raccolte che contengono questa guida
Questa guida fa parte di queste raccolte di guide rapide selezionate che coprono obiettivi di sviluppo Android più ampi:
![](https://developer.android.com/static/images/quick-guides/collection-illustration.png?hl=it)