WebView durum yönetimi

Üç yıldız puanı simgesi

WebView, durum yönetimi için gelişmiş bir sistem sunan ve yaygın olarak kullanılan bir bileşendir. Bir WebView, yapılandırma değişiklikleri sırasında durumunu ve kaydırma konumunu korumalıdır. Kullanıcı cihazı döndürdüğünde veya katlanabilir bir telefonu açtığında WebView kaydırma konumunu kaybedebilir. Bu durumda kullanıcının, WebView'nın en üstünden önceki kaydırma konumuna tekrar kaydırması gerekir.

En iyi uygulamalar

WebView öğesinin yeniden oluşturulma sayısını en aza indirin. WebView durumu yönetme konusunda iyidir ve mümkün olduğunca fazla yapılandırma değişikliği yaparak bu kaliteden yararlanabilirsiniz. Uygulamanız, yapılandırma değişikliklerini işlemelidir. Bunun nedeni, Activity yeniden oluşturulduğunda (sistemin yapılandırma değişikliklerini işleme şekli) WebView de yeniden oluşturulur ve bu durum, Activity durumunu kaybetmesine neden olur.WebView

Malzemeler

  • android:configChanges: Manifest <activity> öğesinin özelliği. Etkinlik tarafından işlenen yapılandırma değişikliklerini listeler.
  • View#invalidate(): Bir görünümün yeniden çizilmesine neden olan yöntem. WebView tarafından devralındı.

Adımlar

WebView durumunu kaydetmek için Activity yeniden oluşturmaktan mümkün olduğunca kaçının ve ardından WebView geçersiz kılınarak durumunu korurken yeniden boyutlandırılmasını sağlayın.

1. AndroidManifest.xml için yapılandırma değişiklikleri ekleme

Uygulamanızın (sistem yerine) işlediği yapılandırma değişikliklerini belirterek etkinliğin yeniden oluşturulmasını önleyin:

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

2. Yapılandırma değişikliklerinde WebView geçersiz kılınır.

Kotlin

override fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)
    webView.invalidate()
}

Java

@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    webview.invalidate();
}

Bu adım yalnızca görünüm sistemi için geçerlidir. Jetpack Compose, Composable öğelerini doğru şekilde yeniden boyutlandırmak için herhangi bir şeyi geçersiz kılmaya gerek duymaz. Ancak, Compose doğru şekilde yönetilmezse WebView öğesini sık sık yeniden oluşturur. Compose uygulamalarınızda WebView durumunu kaydetmek ve geri yüklemek için Accompanist WebView sarmalayıcısını kullanın.

Sonuçlar

Uygulamanızın WebView bileşenleri artık yeniden boyutlandırma, yön değişikliği, katlama ve açma gibi birden fazla yapılandırma değişikliğinde durumlarını ve kaydırma konumlarını koruyor.

Ek kaynaklar

Yapılandırma değişiklikleri ve bunları yönetme hakkında daha fazla bilgi edinmek için Yapılandırma değişikliklerini ele alma başlıklı makaleyi inceleyin.