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, 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 die Ausrichtungsänderung bis hin zum Auf- und Zuklappen des Geräts.

Status verwalten

Vermeide es so weit wie möglich, Aktivitäten bei Konfigurationsänderungen neu zu erstellen, und lasse WebView ungültig werden, damit die Größe angepasst werden kann, ohne dass der Status verloren geht.

So verwaltest du 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 die Größe von Composable-Elementen korrekt anzupassen. Allerdings wird WebView in Compose häufig neu erstellt, 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 bewirkt, 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.