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. VonWebView
übernommen.
Sammlungen, die diesen Leitfaden enthalten
Dieser Leitfaden ist Teil der folgenden Kurzanleitungen, die umfassendere Ziele der Android-Entwicklung abdecken:
