Pertama-tama, lihat posting saya di Fragmen yang disimpan. Mungkin membantu.
Sekarang untuk menjawab pertanyaan Anda:
Apakah fragmen juga mempertahankan status tampilan , atau akankah ini dibuat ulang saat perubahan konfigurasi - apa sebenarnya "dipertahankan"?
Ya, Fragment
status akan dipertahankan di seluruh perubahan konfigurasi. Secara khusus, "dipertahankan" berarti bahwa fragmen tidak akan dihancurkan pada perubahan konfigurasi. Artinya, Fragment
akan dipertahankan bahkan jika perubahan konfigurasi menyebabkan yang mendasarinya Activity
dihancurkan.
Akankah fragmen dihancurkan ketika pengguna meninggalkan aktivitas?
Sama seperti Activity
s, Fragment
s dapat dihancurkan oleh sistem ketika sumber daya memori rendah. Apakah Anda memiliki fragmen Anda mempertahankan keadaan instance mereka di seluruh perubahan konfigurasi tidak akan berpengaruh pada apakah sistem akan menghancurkan atau tidak Fragment
begitu Anda meninggalkan Activity
. Jika Anda meninggalkan Activity
(yaitu dengan menekan tombol beranda), huruf Fragment
s mungkin atau mungkin tidak dihancurkan. Jika Anda meninggalkan Activity
dengan menekan tombol kembali (dengan demikian, memanggil finish()
dan secara efektif menghancurkan Activity
), semua yang Activity
terlampir Fragment
juga akan dihancurkan.
Mengapa tidak bekerja dengan fragmen di tumpukan belakang?
Mungkin ada beberapa alasan mengapa itu tidak didukung, tetapi alasan paling jelas bagi saya adalah bahwa Activity
memegang referensi ke FragmentManager
, dan FragmentManager
mengelola backstack. Artinya, tidak masalah jika Anda memilih untuk mempertahankan Fragment
atau tidak, backstack Activity
(dan dengan demikian FragmentManager
) akan dimusnahkan pada perubahan konfigurasi. Alasan lain mengapa itu mungkin tidak berhasil adalah karena hal-hal mungkin menjadi rumit jika kedua fragmen yang ditahan dan fragmen yang tidak disimpan dibiarkan ada di backstack yang sama.
Kasus penggunaan mana yang masuk akal untuk menggunakan metode ini?
Fragmen yang disimpan dapat sangat berguna untuk menyebarkan informasi status - terutama manajemen utas - di seluruh instance aktivitas. Misalnya, sebuah fragmen dapat berfungsi sebagai host untuk instance Thread
atau AsyncTask
, mengelola operasinya. Lihat posting blog saya tentang topik ini untuk informasi lebih lanjut.
Secara umum, saya akan memperlakukannya sama dengan menggunakan onConfigurationChanged
dengan Activity
... jangan menggunakannya sebagai bandaid hanya karena Anda terlalu malas untuk mengimplementasikan / menangani perubahan orientasi dengan benar. Hanya gunakan saat Anda perlu.