Gestire lo stato di WebView

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 da WebView.

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:

Consenti alla tua app di supportare un'esperienza utente ottimizzata su tablet, dispositivi pieghevoli e ChromeOS.

Domande o feedback

Visita la nostra pagina delle domande frequenti e scopri le guide rapide o contattaci per farci sapere cosa ne pensi.