Her şeyden önce, yazıma bir göz at muhafaza Fragments üzerinde. O yardımcı olabilir.
Şimdi sorularınızı cevaplamak için:
Parça aynı zamanda görüş durumunu koruyor mu veya konfigürasyon değişikliğinde yeniden yaratılacak mı - tam olarak "korunuyor" nedir?
Evet, Fragment
'ın durumu yapılandırma değişikliği boyunca korunur. Özellikle, "muhafaza", parçanın yapılandırma değişikliklerinde yok edilmeyeceği anlamına gelir . Yani, Fragment
edilecektir tutulan yapılandırma değişikliği altında yatan neden olsa bile Activity
imha edilecek.
Kullanıcı etkinlikten ayrıldığında parça imha edilecek mi?
Tıpkı Activity
s gibi , Fragment
bellek kaynakları az olduğunda sistem tarafından yok edilebilir. Parçalarınızın yapılandırma durumlarında örnek durumlarını korumasına sahip olup olmamanız, sistemden Fragment
ayrıldıktan sonra sistemin s'yi yok edip etmeyeceği üzerinde bir etkisi olmayacaktır Activity
. Activity
(Yani ana sayfa düğmesine basarak) çıkarsanız , Fragment
s yok edilebilir veya edilmeyebilir. Activity
Geri düğmesine basarak ayrılırsanız (böylece, arama finish()
ve etkili bir şekilde yok etme Activity
), Activity
ekli olanların tümü Fragment
de yok edilir.
Neden arka yığındaki parçalarla çalışmıyor?
Orada o desteklenmeyen neden birden çok nedeni muhtemelen, ama bana en belirgin nedeni olduğunu Activity
bir başvuru tutan FragmentManager
ve FragmentManager
backstack yönetir. Diğer bir deyişle, bilgilerinizi korumayı Fragment
veya korumamayı seçerseniz seçin , Activity
(ve böylece FragmentManager
'backstack'i) bir yapılandırma değişikliğinde imha edilir. Her iki parçaları kalmış eğer işler zor olsun çünkü neden bu işi olmayabilir diğer bir nedeni ve olmayan tutulan parçaları aynı backstack mevcut izin verildi.
Bu yöntemi kullanmanın mantıklı olduğu kullanım durumları nelerdir?
Tutulan fragmanlar, durum bilgilerinin - özellikle iş parçacığı yönetiminin - etkinlik örnekleri arasında yayılması için oldukça yararlı olabilir. Örneğin, bir parça , işleyişinin bir örneği Thread
ya da AsyncTask
yönetimi için bir ana bilgisayar işlevi görebilir. Bkz benim blog yazısı fazla bilgi için bu konudaki .
Genel olarak, bir oryantasyon değişikliğini doğru bir şekilde uygulamak / işlemek için çok tembel olduğunuz için onConfigurationChanged
bir Activity
... ile bandaj gibi kullanmayın. Sadece ihtiyacınız olduğunda kullanın.