Mengelola status WebView

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):

<activity
  android:name=".MyActivity"
  android:configChanges="screenLayout|orientation|screenSize
      |keyboard|keyboardHidden|smallestScreenSize" />

2. Membatalkan WebView setiap kali aplikasi Anda menerima 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.

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:

Aktifkan aplikasi Anda untuk mendukung pengalaman pengguna yang dioptimalkan di tablet, perangkat foldable, dan perangkat ChromeOS.

Ada pertanyaan atau masukan

Buka halaman pertanyaan umum (FAQ) dan pelajari panduan singkat atau hubungi kami dan beri tahu kami pendapat Anda.