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 Änderungen der Ausrichtung bis hin zum Auf- und Zuklappen des Geräts.
Versionskompatibilität
Diese Implementierung ist mit allen API-Levels 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 WebView ungültig werden, damit die Größe angepasst werden kann, ohne dass der Status verloren geht.
So verwalten Sie den Status von WebView:
- Von Ihrer App verarbeitete Konfigurationsänderungen deklarieren
- Status
WebViewungü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. Compose erstellt WebView jedoch häufig neu, wenn es nicht richtig verwaltet wird.
Wichtige Fakten
android:configChanges: Attribut 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: