Zarządzanie stanem WebView

WebView to często używany komponent, który oferuje zaawansowany system zarządzania stanem. WebViewmusi zachować stan i pozycję przewijania podczas zmian konfiguracji. Aplikacja WebView może utracić pozycję przewijania, gdy użytkownik obróci urządzenie lub rozłoży składany telefon, co spowoduje, że użytkownik będzie musiał ponownie przewinąć od początku WebView do poprzedniej pozycji przewijania.

Aplikacja WebView dobrze zarządza swoim stanem. Możesz wykorzystać tę zaletę, zarządzając jak największą liczbą zmian konfiguracji, aby zminimalizować liczbę przypadków ponownego tworzenia WebView. Aplikacja powinna obsługiwać zmiany konfiguracji, ponieważ odtwarzanie aktywności (sposób obsługi zmian konfiguracji przez system) powoduje odtworzenie WebView, co powoduje utratę stanu przez WebView.

Zarządzanie stanem

Podczas wprowadzania zmian w konfiguracji staraj się jak najrzadziej odtwarzać element Activity, a element WebView pozostawiaj nieważny, aby można było zmienić jego rozmiar, zachowując jego stan.

Aby zarządzać stanem WebView:

  • Deklarowanie zmian konfiguracji obsługiwanych przez aplikację
  • unieważnia stan WebView,

1. Dodawanie zmian konfiguracji do pliku AndroidManifest.xml aplikacji

Unikaj ponownego tworzenia aktywności, określając zmiany konfiguracji obsługiwane przez aplikację (a nie przez system):

<activity
  android:name=".MyActivity"
  android:configChanges="screenLayout|orientation|screenSize
      |keyboard|keyboardHidden|smallestScreenSize" />
.

2. unieważnia WebView, gdy aplikacja otrzyma zmianę 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 widoku, ponieważ Jetpack Compose nie musi unieważniać niczego, aby prawidłowo zmienić rozmiar elementów Composable. Jednak jeśli nie będziesz odpowiednio zarządzać Compose, często będzie ono ponownie tworzyć WebView.

Najważniejsze punkty

  • android:configChanges: atrybut elementu <activity> w pliku manifestu. Zawiera listę zmian konfiguracji obsługiwanych przez tę aktywność.
  • View#invalidate(): metoda powodująca ponowne narysowanie widoku. Odziedziczone przez: WebView.

Wyniki

Komponenty WebView w aplikacji zachowują teraz swój stan i pozycję przewijania niezależnie od wielu zmian konfiguracji, od zmiany rozmiaru po zmianę orientacji, a także składania i rozkładania urządzenia.

Kolekcje zawierające ten przewodnik

Ten przewodnik należy do tych kolekcji krótkich przewodników, które obejmują szersze zagadnienia związane z tworzeniem aplikacji na Androida:

Umożliw aplikacji optymalne działanie na tabletach, urządzeniach składanych i urządzeniach z ChromeOS.

Masz pytania lub chcesz przekazać opinię?

Otwórz stronę z najczęstszymi pytaniami i poznaj krótkie przewodniki lub skontaktuj się z nami i powiedz nam, co o tym myślisz.