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.WebViewtarafı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.