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. VonWebView
ü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: