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, Fragmentedilecektir tutulan yapılandırma değişikliği altında yatan neden olsa bile Activityimha edilecek.
Kullanıcı etkinlikten ayrıldığında parça imha edilecek mi?
Tıpkı Activitys gibi , Fragmentbellek 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 Fragmentayrı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 , Fragments yok edilebilir veya edilmeyebilir. ActivityGeri düğmesine basarak ayrılırsanız (böylece, arama finish()ve etkili bir şekilde yok etme Activity), Activityekli olanların tümü Fragmentde 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 Activitybir başvuru tutan FragmentManagerve FragmentManagerbackstack yönetir. Diğer bir deyişle, bilgilerinizi korumayı Fragmentveya 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 Threadya da AsyncTaskyö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 onConfigurationChangedbir Activity... ile bandaj gibi kullanmayın. Sadece ihtiyacınız olduğunda kullanın.