WebView
to powszechnie używany komponent, który oferuje zaawansowany system zarządzania stanem. WebView
musi zachowywać swój stan i pozycję przewijania po zmianach konfiguracji. WebView
może utracić pozycję przewijania, gdy użytkownik obróci urządzenie lub rozłoży telefon składany, co zmusza go do ponownego przewinięcia WebView
od góry do poprzedniej pozycji.
WebView
dobrze zarządza swoim stanem. Możesz wykorzystać tę jakość, zarządzając jak największą liczbą zmian konfiguracji, aby zminimalizować liczbę przypadków ponownego tworzenia WebView
. Aplikacja powinna obsługiwać zmiany konfiguracji, ponieważ ponowne tworzenie aktywności (sposób, w jaki system obsługuje zmiany konfiguracji) powoduje ponowne tworzenie obiektu WebView
, co sprawia, że traci on stan.WebView
Wyniki
Komponenty aplikacji WebView
zachowują swój stan i pozycję przewijania podczas wielu zmian konfiguracji, od zmiany rozmiaru po zmianę orientacji, składanie i rozkładanie urządzenia.
Zarządzanie stanem
Podczas zmian konfiguracji unikaj jak najczęściej ponownego tworzenia aktywności i pozwól, aby WebView
unieważnił się, aby można było zmienić jego rozmiar przy zachowaniu stanu.
Aby zarządzać stanem konta WebView
:
- Deklarowanie zmian konfiguracji obsługiwanych przez aplikację
- Unieważnij stan
WebView
1. Dodaj zmiany konfiguracji do pliku AndroidManifest.xml
aplikacji.
Aby uniknąć ponownego tworzenia aktywności, określ zmiany konfiguracji obsługiwane przez aplikację (a nie przez system):
<activity
android:name=".MyActivity"
android:configChanges="screenLayout|orientation|screenSize
|keyboard|keyboardHidden|smallestScreenSize" />
2. Unieważniaj WebView
za każdym razem, gdy w aplikacji nastąpi zmiana konfiguracji.
Kotlin
override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) webView.invalidate() }
Java
@Override public void onConfigurationChanged(@NonNull Configuration newConfig) { super.onConfigurationChanged(newConfig); webview.invalidate(); }
Ten krok dotyczy tylko systemu widoków, ponieważ Jetpack Compose nie musi unieważniać niczego, aby prawidłowo zmieniać rozmiar elementów Composable
. Jeśli jednak nie jest on odpowiednio zarządzany, Compose często go odtwarza.WebView
Najważniejsze punkty
android:configChanges
: atrybut elementu<activity>
w pliku manifestu. Zawiera listę zmian konfiguracji obsługiwanych przez aktywność.View#invalidate()
Metoda, która powoduje ponowne narysowanie widoku. Odziedziczone przezWebView
.
Kolekcje, które zawierają ten przewodnik
Ten przewodnik jest częścią wyselekcjonowanych kolekcji przewodników, które obejmują szersze cele związane z programowaniem na Androida:
