WebView-Status verwalten

WebView ist eine häufig verwendete Komponente, die ein erweitertes System für die Zustandsverwaltung bietet. Ein WebView muss seinen Status und seine Scrollposition bei Konfigurationsänderungen beibehalten. Bei einem WebView kann die Scrollposition verloren gehen, wenn der Nutzer das Gerät dreht oder ein faltbares Smartphone öffnet. Der Nutzer muss dann noch einmal von oben nach unten scrollen, um zur vorherigen Scrollposition zu gelangen.WebView

WebView kann seinen Status gut verwalten. Sie können diese Eigenschaft nutzen, indem Sie so viele Konfigurationsänderungen wie möglich vornehmen, um die Anzahl der Neuerstellungen von WebView zu minimieren. Ihre App sollte Konfigurationsänderungen verarbeiten, da bei der Aktivitätswiederherstellung (dem Systemmechanismus zur Verarbeitung von Konfigurationsänderungen) die WebView neu erstellt wird, wodurch der Status der WebView verloren geht.

Status verwalten

Vermeiden Sie bei Konfigurationsänderungen nach Möglichkeit die Neuerstellung von Activity und lassen Sie die WebView ungültig werden, damit sie ihre Größe ändern kann, während der Status beibehalten wird.

So verwalten Sie den Status von WebView:

  • Von Ihrer App verarbeitete Konfigurationsänderungen deklarieren
  • Status WebView entwerten

1. Konfigurationsänderungen an der Datei AndroidManifest.xml Ihrer App vornehmen

Sie können die Neuerstellung von Aktivitäten vermeiden, indem Sie die Konfigurationsänderungen angeben, die von Ihrer App und nicht vom System verarbeitet werden:

<activity
  android:name=".MyActivity"
  android:configChanges="screenLayout|orientation|screenSize
      |keyboard|keyboardHidden|smallestScreenSize" />

2. WebView ungültig machen, wenn Ihre App eine Konfigurationsänderung erhält

Kotlin

override fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)
    webView.invalidate()
}

Java

@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    webview.invalidate();
}

Dieser Schritt gilt nur für das Ansichtssystem, da in Jetpack Compose nichts ungültig gemacht werden muss, um die Größe von Composable-Elementen richtig zu ändern. Compose erstellt jedoch häufig eine WebView neu, wenn sie nicht richtig verwaltet wird.

Wichtige Fakten

  • android:configChanges: Attribut des Manifest-Elements <activity>. Listet die Konfigurationsänderungen auf, die von der Aktivität verarbeitet werden.
  • View#invalidate(): Methode, die dazu führt, dass eine Ansicht neu gezeichnet wird. Von WebView übernommen.

Ergebnisse

Die WebView-Komponenten Ihrer App behalten jetzt ihren Status und ihre Scrollposition bei mehreren Konfigurationsänderungen, z. B. bei Änderungen der Größe, der Ausrichtung oder beim Auf- und Zuklappen des Geräts.

Sammlungen, die diesen Leitfaden enthalten

Dieser Leitfaden ist Teil der folgenden ausgewählten Sammlungen von Kurzanleitungen, die allgemeinere Ziele der Android-Entwicklung abdecken:

Sorgen Sie dafür, dass Ihre App auf Tablets, faltbaren Geräten und ChromeOS-Geräten optimiert genutzt werden kann.

Hast du Fragen oder Feedback?

Auf unserer Seite mit häufig gestellten Fragen finden Sie Kurzanleitungen. Sie können sich auch gern an uns wenden.