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.
Praktik terbaik
Minimalkan frekuensi pembuatan ulang WebView. WebView mampu mengelola statusnya dengan baik, dan Anda dapat memanfaatkan kualitas ini dengan mengelola sebanyak mungkin perubahan konfigurasi. Aplikasi Anda harus menangani perubahan konfigurasi karena pembuatan ulang Activity (cara sistem menangani perubahan konfigurasi) juga membuat ulang WebView, yang menyebabkan WebView kehilangan statusnya.
Bahan
android:configChanges: Atribut elemen<activity>manifes. Mencantumkan perubahan konfigurasi yang ditangani oleh aktivitas.View#invalidate(): Metode yang menyebabkan tampilan digambar ulang. Diwarisi olehWebView.
Langkah
Untuk menyimpan status WebView, hindari pembuatan ulang Activity sebanyak mungkin, lalu biarkan WebView dibatalkan sehingga dapat diubah ukurannya sambil mempertahankan statusnya.
1. Menambahkan perubahan konfigurasi ke AndroidManifest.xml
Hindari pembuatan ulang aktivitas dengan menentukan perubahan konfigurasi yang ditangani oleh aplikasi Anda (bukan oleh sistem):
<activity
android:name=".MyActivity"
android:configChanges="screenLayout|orientation|screenSize
|keyboard|keyboardHidden|smallestScreenSize" />
2. Membatalkan WebView pada perubahan konfigurasi
Kotlin
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
webView.invalidate()
}
Java
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
webview.invalidate();
}
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. Gunakan wrapper
Accompanist WebView untuk menyimpan dan memulihkan status WebView
di aplikasi Compose Anda.
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.
Referensi lainnya
Untuk mempelajari lebih lanjut perubahan konfigurasi dan cara mengelolanya, lihat Menangani perubahan konfigurasi.