WebView
to często używany komponent, który oferuje zaawansowany system zarządzania stanem. WebView
musi 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:
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=pl)