Gestire lo stato di WebView

WebView è un componente di uso comune che offre un sistema avanzato per la gestione dello stato. Un WebView deve mantenere il suo 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 uno smartphone pieghevole, il che lo costringe a scorrere di nuovo dalla parte superiore del WebView alla posizione di scorrimento precedente.

WebView è efficace nella gestione del suo stato. Puoi sfruttare questa qualità gestendo il maggior numero possibile di modifiche alla configurazione per ridurre al minimo il numero di volte in cui viene ricreato un WebView. La tua app deve gestire le modifiche alla configurazione perché la ricreazione dell'attività (il modo in cui il sistema gestisce le modifiche alla configurazione) ricrea il WebView, che fa sì che il WebView perda lo stato.

Risultati

I componenti WebView della tua app mantengono il loro stato e la posizione di scorrimento durante le modifiche alla configurazione, dal ridimensionamento alle modifiche dell'orientamento, fino alla chiusura e all'apertura del dispositivo.

Compatibilità delle versioni

Questa implementazione è compatibile con tutti i livelli API.

Dipendenze

Nessuno.

Gestire lo stato

Evita il più possibile la ricreazione dell'attività durante le modifiche alla configurazione e lascia che WebView invalidi in modo che possa ridimensionarsi mantenendo il suo stato.

Per gestire lo stato di WebView:

  • Dichiara le modifiche alla configurazione gestite dalla tua app
  • Invalida lo stato di WebView

1. Aggiungi le modifiche alla configurazione al file AndroidManifest.xml della tua app

Evita la ricreazione dell'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. Invalida 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 Composable elementi correttamente. Tuttavia, Compose ricrea spesso un WebView se non viene gestito correttamente.

Punti chiave

  • android:configChanges: attributo dell'elemento <activity> del manifest. Elenca le modifiche alla configurazione gestite dall'attività.
  • View#invalidate(): metodo che fa sì che una visualizzazione venga ridisegnata. Ereditato da WebView.

Raccolte che contengono questa guida

Questa guida fa parte di queste raccolte di guide rapide curate che riguardano obiettivi di sviluppo Android più ampi:

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

Hai domande o feedback?

Visita la nostra pagina delle domande frequenti e scopri le guide rapide oppure contattaci e comunicaci la tua opinione.