Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
WebView, durum yönetimi için gelişmiş bir sistem sunan yaygın olarak kullanılan bir bileşendir. WebView, yapılandırma değişikliklerinde durumunu ve kaydırma konumunu korumalıdır. Kullanıcı cihazı döndürdüğünde veya katlanabilir telefonu açtığında WebView kaydırma konumunu kaybedebilir. Bu durumda kullanıcı, WebView'ün üst kısmından önceki kaydırma konumuna tekrar kaydırmaya zorlanır.
WebView, durumunu yönetme konusunda iyidir. WebView öğesinin yeniden oluşturulma sayısını en aza indirmek için mümkün olduğunca fazla yapılandırma değişikliği yöneterek bu özellikten yararlanabilirsiniz. Etkinlik yeniden oluşturulması (sistemin yapılandırma değişikliklerini işleme şekli) WebView'ı yeniden oluşturduğundan ve bu da WebView'ın durumunu kaybetmesine neden olduğundan uygulamanız yapılandırma değişikliklerini işlemelidir.
Durumu yönetme
Yapılandırma değişiklikleri sırasında Activity öğesini yeniden oluşturmaktan mümkün olduğunca kaçının ve WebView öğesinin durumunu korurken yeniden boyutlandırabilmesi için geçersiz kılınmasına izin verin.
WebView durumunu yönetmek için:
Uygulamanız tarafından yönetilen yapılandırma değişikliklerini beyan etme
Jetpack Compose'un Composable öğelerini doğru şekilde yeniden boyutlandırmak için hiçbir şeyi geçersiz kılması gerekmediğinden bu adım yalnızca görüntüleme sistemi için geçerlidir. Ancak Düzenle, doğru şekilde yönetilmezse genellikle WebView öğesini yeniden oluşturur.
View#invalidate(): Bir görünümün yeniden çizilmesine neden olan yöntem. WebView tarafından devralındı.
Sonuçlar
Uygulamanızın WebView bileşenleri artık boyut değiştirmeden yön değişikliklerine ve cihazın katlanması ile açılmasına kadar birden fazla yapılandırma değişikliğinde durumlarını ve kaydırma konumlarını koruyor.
Bu kılavuzu içeren koleksiyonlar
Bu kılavuz, daha geniş Android geliştirme hedeflerini kapsayan, özel olarak seçilmiş Hızlı Kılavuz koleksiyonlarından biridir:
Büyük ekranlar için optimize etme
Uygulamanızın tabletler, katlanabilir cihazlar ve ChromeOS cihazlarda optimize edilmiş bir kullanıcı deneyimi sunmasını sağlayın.
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-02-06 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-02-06 UTC."],[],[],null,["# Manage WebView state\n\n[`WebView`](/reference/kotlin/android/webkit/WebView) is a commonly used\ncomponent that offers an advanced system for state management. A `WebView`\nmust maintain its state and scroll position across configuration changes. A\n`WebView` can lose scroll position when the user rotates the device or unfolds\na foldable phone, which forces the user to scroll again from the top of the\n`WebView` to the previous scroll position.\n\n`WebView` is good at managing its state. You can take advantage of this quality\nby managing as many configuration changes as possible to minimize the number of\ntimes a `WebView` is recreated. Your app should handle configuration changes\nbecause activity recreation (the system's way of handling configuration\nchanges) recreates the `WebView`, which causes the `WebView` to lose state.\n\nManage state\n------------\n\nAvoid [`Activity`](/reference/kotlin/android/app/Activity) recreation as much as\npossible during configuration changes, and let the `WebView` invalidate so it\ncan resize while retaining its state.\n\nTo manage `WebView` state:\n\n- Declare configuration changes handled by your app\n- Invalidate the `WebView` state\n\n#### 1. Add configuration changes to your app's `AndroidManifest.xml` file\n\nAvoid activity recreation by specifying the configuration changes handled by\nyour app (rather than by the system): \n\n \u003cactivity\n android:name=\".MyActivity\"\n android:configChanges=\"screenLayout|orientation|screenSize\n |keyboard|keyboardHidden|smallestScreenSize\" /\u003e\n\n| **Note:** While this nonexhaustive list of configuration changes might be okay for many applications, make sure to manage the configuration changes that make the most sense for your case based on how your users interact with the app, for how long, and when. To find the best combination of configurations for your app, see [`android:configChanges`](/guide/topics/manifest/activity-element#config).\n\n#### 2. Invalidate `WebView` whenever your app receives a configuration change\n\n### Kotlin\n\n```kotlin\noverride fun onConfigurationChanged(newConfig: Configuration) {\n super.onConfigurationChanged(newConfig)\n webView.invalidate()\n}\n```\n\n### Java\n\n```java\n@Override\npublic void onConfigurationChanged(@NonNull Configuration newConfig) {\n super.onConfigurationChanged(newConfig);\n webview.invalidate();\n}\n```\n\nThis step applies only to the view system, as Jetpack Compose does not need to\ninvalidate anything to resize\n[`Composable`](/reference/kotlin/androidx/compose/runtime/Composable) elements\ncorrectly. However, Compose recreates a `WebView` often if not managed\ncorrectly.\n\nKey points\n----------\n\n- [`android:configChanges`](/guide/topics/manifest/activity-element#config): Attribute of the manifest `\u003cactivity\u003e` element. Lists the configuration changes handled by the activity.\n- [`View#invalidate()`](/reference/kotlin/android/view/View#invalidate_2): Method that causes a view to be redrawn. Inherited by `WebView`.\n\nResults\n-------\n\nYour app's `WebView` components now retain their state and scroll position\nacross multiple configuration changes, from resizing to orientation changes\nto device folding and unfolding.\n\nCollections that contain this guide\n-----------------------------------\n\nThis guide is part of these curated Quick Guide collections that cover\nbroader Android development goals: \n\n### Optimize for large screens\n\nEnable your app to support an optimized user experience on tablets, foldables, and ChromeOS devices. \n[Quick guide collection](/quick-guides/collections/optimize-for-large-screens) \n\nHave questions or feedback\n--------------------------\n\nGo to our frequently asked questions page and learn about quick guides or reach out and let us know your thoughts. \n[Go to FAQ](/quick-guides/faq) [Leave feedback](https://issuetracker.google.com/issues/new?component=1573691&template=1993320)"]]