Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
WebView adalah komponen yang umum digunakan
dan menawarkan sistem lanjutan untuk pengelolaan status. WebView
harus mempertahankan status dan posisi scroll di seluruh perubahan konfigurasi. WebView
dapat kehilangan posisi scroll saat pengguna memutar perangkat atau membuka
ponsel foldable, yang memaksa pengguna men-scroll lagi dari bagian atas
WebView ke posisi scroll sebelumnya.
WebView mampu mengelola statusnya dengan baik. Anda dapat memanfaatkan kualitas ini
dengan mengelola sebanyak mungkin perubahan konfigurasi untuk meminimalkan frekuensi
WebView dibuat ulang. Aplikasi Anda harus menangani perubahan konfigurasi
karena pembuatan ulang aktivitas (cara sistem menangani perubahan
konfigurasi) membuat ulang WebView, yang menyebabkan WebView kehilangan status.
Mengelola status
Hindari pembuatan ulang Activity sebanyak mungkin
selama perubahan konfigurasi, dan biarkan WebView dibatalkan sehingga
dapat diubah ukurannya sambil mempertahankan statusnya.
Untuk mengelola status WebView:
Mendeklarasikan perubahan konfigurasi yang ditangani oleh aplikasi Anda
Membatalkan status WebView
1. Menambahkan perubahan konfigurasi ke file AndroidManifest.xml aplikasi Anda
Hindari pembuatan ulang aktivitas dengan menentukan perubahan konfigurasi yang ditangani oleh
aplikasi Anda (bukan oleh sistem):
Langkah ini hanya berlaku untuk sistem tampilan karena Jetpack Compose tidak perlu
membatalkan apa pun untuk mengubah ukuran
elemen Composable
dengan benar. Namun, Compose sering membuat ulang WebView jika tidak dikelola
dengan benar.
Poin utama
android:configChanges: Atribut elemen <activity> manifes. Mencantumkan perubahan konfigurasi yang ditangani oleh aktivitas.
View#invalidate(): Metode yang menyebabkan tampilan digambar ulang. Diwarisi oleh WebView.
Hasil
Komponen WebView aplikasi Anda sekarang mempertahankan status dan posisi scroll
di beberapa perubahan konfigurasi, mulai dari mengubah ukuran hingga perubahan orientasi
hingga melipat dan membentangkan perangkat.
Koleksi yang berisi panduan ini
Panduan ini adalah bagian dari koleksi Panduan Cepat pilihan yang membahas
sasaran pengembangan Android yang lebih luas:
Mengoptimalkan aplikasi untuk layar besar
Aktifkan aplikasi Anda untuk mendukung pengalaman pengguna yang dioptimalkan di tablet, perangkat foldable, dan perangkat ChromeOS.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-02-06 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 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)"]]