WebView-Status verwalten

WebView ist eine häufig verwendete Komponente, die ein fortschrittliches System für die Statusverwaltung 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 aufklappt. In diesem Fall muss der Nutzer noch einmal vom Anfang des WebView bis zur vorherigen Scrollposition scrollen.

WebView kann seinen Status gut verwalten. Sie können diese Qualität nutzen, indem Sie so viele Konfigurationsänderungen wie möglich verwalten, um die Anzahl der Neuerstellungen von WebView zu minimieren. Ihre App sollte Konfigurationsänderungen verarbeiten können, da bei der Neuerstellung von Aktivitäten (der Art und Weise, wie das System Konfigurationsänderungen verarbeitet) die WebView neu erstellt wird, wodurch der Status der WebView verloren geht.

Ergebnisse

Die WebView-Komponenten Ihrer App behalten ihren Status und ihre Scrollposition bei mehreren Konfigurationsänderungen bei, von der Größenanpassung über Änderungen der Ausrichtung bis hin zum Auf- und Zuklappen des Geräts.

Versionskompatibilität

Diese Implementierung ist mit allen API-Ebenen kompatibel.

Abhängigkeiten

Keine.

Status verwalten

Vermeiden Sie es so weit wie möglich, Aktivitäten bei Konfigurationsänderungen neu zu erstellen, und lassen Sie das WebView ungültig werden, damit es die Größe ändern kann, ohne seinen Status zu verlieren.

So verwalten Sie den Status von WebView:

  • Von Ihrer App verarbeitete Konfigurationsänderungen deklarieren
  • Status WebView ungültig machen

1. Konfigurationsänderungen der Datei AndroidManifest.xml Ihrer App hinzufügen

Vermeiden Sie die Neuerstellung von Aktivitäten, 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 View-System, da bei Jetpack Compose nichts ungültig gemacht werden muss, um Composable-Elemente richtig zu skalieren. Compose erstellt WebView jedoch häufig neu, wenn es nicht richtig verwaltet wird.

Wichtige Fakten

  • android:configChanges: Attribute des Manifestelements <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.

Sammlungen, die diesen Leitfaden enthalten

Dieser Leitfaden ist Teil der folgenden Kurzanleitungen, die umfassendere Ziele der Android-Entwicklung abdecken:

Sorgen Sie dafür, dass Ihre App eine optimierte Nutzerfreundlichkeit auf Tablets, Foldables und ChromeOS-Geräten bietet.

Fragen oder Feedback

Auf der Seite mit den häufig gestellten Fragen finden Sie Kurzanleitungen. Sie können uns aber auch gern kontaktieren und uns Ihre Meinung mitteilen.