Zarządzanie stanem WebView

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 przez WebView.

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:

Włącz w aplikacji obsługę zoptymalizowanego środowiska użytkownika na tabletach, urządzeniach składanych i urządzeniach z ChromeOS.

Masz pytania lub chcesz podzielić się opinią?

Odwiedź stronę z najczęstszymi pytaniami, aby zapoznać się z przewodnikami, lub skontaktuj się z nami i podziel się swoimi przemyśleniami.