Latar Belakang Cepat
Secara default, ketika perubahan konfigurasi tombol tertentu terjadi pada Android (contoh umum adalah perubahan orientasi), Android sepenuhnya memulai kembali Aktivitas yang sedang berjalan untuk membantunya menyesuaikan dengan perubahan tersebut.
Ketika Anda mendefinisikan android:configChanges="keyboardHidden|orientation"di AndroidManifest Anda, Anda memberi tahu Android: "Tolong jangan lakukan reset default ketika keyboard ditarik keluar, atau ponsel diputar; saya ingin menangani ini sendiri. Ya, saya tahu apa yang saya lakukan "
Apakah ini hal yang baik? Kita akan segera melihat ...
Jangan khawatir?
Salah satu pro Anda mulai dengan bahwa ada:
tidak perlu khawatir aktivitas Anda sudah dirotasi
Dalam banyak kasus, orang secara keliru percaya bahwa ketika mereka memiliki kesalahan yang dihasilkan oleh perubahan orientasi ("rotasi"), mereka dapat memperbaikinya dengan memasukkan android:configChanges="keyboardHidden|orientation".
Namun, android: configChanges = "keyboardHidden | orientasi" tidak lebih dari seorang bandaid. Sebenarnya, ada banyak cara perubahan konfigurasi dapat dipicu. Misalnya, jika pengguna memilih bahasa baru (mis. Lokal telah berubah), aktivitas Anda akan dimulai kembali dengan cara yang sama seperti perubahan orientasi. Jika mau, Anda dapat melihat daftar semua jenis perubahan konfigurasi .
Sunting : Lebih penting lagi, seperti yang ditunjukkan oleh hackbod di komentar, aktivitas Anda juga akan dimulai ulang ketika aplikasi Anda ada di latar belakang dan Android memutuskan untuk membebaskan sebagian memori dengan membunuhnya. Saat pengguna kembali ke aplikasi Anda, Android akan mencoba untuk memulai kembali aktivitas dengan cara yang sama jika ada perubahan konfigurasi lainnya. Jika Anda tidak bisa mengatasinya - pengguna tidak akan senang ...
Dengan kata lain, menggunakan android:configChanges="keyboardHidden|orientation"bukanlah solusi untuk "kekhawatiran" Anda. Cara yang benar adalah dengan kode aktivitas Anda sehingga mereka senang dengan setiap restart Android melemparnya. Ini adalah praktik yang baik yang akan membantu Anda, jadi biasakanlah.
Jadi kapan saya harus menggunakannya?
Seperti yang Anda sebutkan ada keuntungan yang berbeda. Menimpa perubahan konfigurasi default untuk rotasi dengan menanganinya sendiri akan mempercepat. Namun, kecepatan ini memang datang dengan harga kenyamanan.
Sederhananya, jika Anda menggunakan tata letak yang sama untuk potret dan lanskap, Anda dalam kondisi yang baik dengan melakukan penulisan ulang. Alih-alih memuat ulang seluruh kegiatan, tampilan hanya akan bergeser untuk mengisi ruang yang tersisa.
Namun , jika karena alasan tertentu Anda menggunakan tata letak yang berbeda saat perangkat dalam lanskap, fakta bahwa Android memuat ulang Aktivitas Anda adalah baik karena kemudian akan memuat tata letak yang benar. [Jika Anda menggunakan override pada Activity seperti itu, dan ingin melakukan tata letak magis saat runtime ... well, semoga sukses - itu jauh dari sederhana]
Ringkasan Cepat
Dengan segala cara, jika cocok android:configChanges="keyboardHidden|orientation"untuk Anda, maka gunakanlah. Tetapi tolong pastikan untuk menguji apa yang terjadi ketika sesuatu berubah, karena perubahan orientasi bukan satu-satunya cara memulai kembali aktivitas penuh.