Pengelolaan status WebView

Ikon rating bintang tiga

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 oleh WebView.

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.