Fragment Lifecycle Nedir?
Android’deki Fragment sınıfı, dinamik Kullanıcı Arayüzleri(UI) oluşturmak için kullanılır. Fragment Activity içerisinde kullanılmalıdır. Fragmentların en büyük avantajı, birden çok ekran boyutu için UI oluşturma görevini basitleştirmesidir. Bir activity herhangi bir sayıda fragment içerebilir.
Yukaridaki sekil fragmentin Lifecycle statelerinin her birini ve bunların hem fragmentin lifecycle callbacklarıyla hem de Fragmentin View Lifecycle’i ile nasıl ilişkili olduğunu gösterir. Bir fragment Lifecycle boyunca ilerledikçe, stateleri boyunca yukarı ve aşağı hareket eder. Örneğin, back stack’in en tepesine eklenen bir fragment, CREATED -STARTED - RESUMED seklinde yukarı doğru hareket eder. Tersine backstackden bir fragment atıldığında(popped), bu state boyunca aşağı doğru RESUMED -STARTED -CREATED - DESTROYED seklinde hareket eder.
onAttach() : Fragmentiniz CREATED durumuna ulaştığında, FragmentManager’a eklenir ve onAttach() methodu çağrılır. Bu method ilk olarak fragmentin kendi onCreate()’nden önce çağrılacak ve fragmentnızın bir activitye eklendiğini bize bildirecektir. Fragmentin View’inin şu anda oluşturulmadığını unutmayın.
onCreate(): Bir fragmentın ilk oluşturulmasını saglamak için çağrılır. onAttach’tan sonra ve onCreateView’den önce çağrılır. Bu methodun, Fragment’ın Activitysi hala oluşturulma sürecindeyken çağrılabileceğini unutmayın. Bu nedenle, Activitynin content view hiyerarşisinin bu noktada başlatılması yanlistir.
onCreateView(): Fragmentın kullanıcı arayüzünü ilk kez çizme zamanı geldiğinde sistem bu callbacki çağırır. Fragment’ a bir UI çizmesi ve fragmenta bagli view hiyerarsini olusturmak icin gereklidir, bu method geriye bir View döndürülmelidir. Yalnızca ve yalnızca, fragmentinizin viewi null olmayan bir View dönerse, bu View fragment üzerinde set edilir.
onViewCreated(): Ortaya çıkan viewlari yapılandırmamız gerekiyor. Burada, Viewnizin initial state’ini ayarlayabilirsiniz, callbackleri fragmentlarin viewini güncelleyen; LiveData instancelarini observ edebilirsiniz ve fragmentinizin viewindeki herhangi bir RecyclerView veya ViewPager2 instance’nda adapterlari set edebilirsiniz veya navigation islemlerini halledebilirsiniz. Butun bunlar için uygun yerdir.
onViewStateRestored(): Tüm kaydedilen state, fragmentın view hiyerarşisine geri yüklendiğinde çağrılır. Burasi, checkbox widget öğelerinin şu anda işaretli olup olmadığı gibi, view hiyerarşisinin kendisini izlemesine izin verdiğiniz kaydedilmiş state’e dayalı olarak initialization yapmak için kullanılabilir.
onStart(): Fragment görünür hale geldiğinde onStart() methodu çağrılır. Fragment görünür olduğunda, tüm giris Animatör ve Transition efektleri biter ve fragment, kullanıcı etkileşimi(intereaction) için hazırdır.
onResume(): Kullanıcının artık fragmentinizle etkileşime geçebileceğini belirtmek için uygun bir sinyaldir. Fragment kullanıcıya görünür olduğunda ve aktif olarak çalıştığında çağrılır.
onPause(): Sistem, kullanıcının fragmentdan ayrıldığının ilk göstergesi olarak bu methodu çağırır. Bu genellikle, geçerli kullanıcı oturumunun ötesinde kalıcı olması gereken değişiklikleri gerçekleştirmeniz gereken yerdir.
onStop(): Bu state geçişi, yalnızca parent activity veya fragmentin durdurulmasıyla değil, aynı zamanda parent activty veya fragment tarafından state’in kaydedilmesiyle de tetiklenir. onStop() callbackinin sırası ve state’in onSaveInstanceState() ile kaydedilmesi API seviyesine göre farklılık gösterir. API 28'den önceki tüm API seviyeleri için onSaveInstanceState(), onStop()’tan önce çağrılır. 28 ve üzeri API seviyeleri için cagirma sırası tersine çevrilir.
onDestroyView() : onDestroy()’dan önce çağrılır. Bu, kullanıcı arayüzünü(UI) set ettigimiz onCreateView() methodunun tersidir. UI’da özel temizlenmesi gereken şeyler varsa, bu logic onDestroyView() içine yerleştirilebilir. Tüm çıkış animasyonları ve geçişleri(transitions) tamamlandıktan ve Fragment’ın View’i ekrandan ayrıldıktan sonra Fragment onDestroyView() callbackini çağırır. Bu noktadan sonra, Fragment’ ın View’i null bir değer döndürür. Burada, Fragment’ ın View’ine yapılan tüm referanslar remove edilmelidir.
onDestroy() : onDestroy(), fragmentin state’ inin memoryden son temizliğinin yapilmasi için çağrılır ancak Android platformu tarafından çağrılması garanti edilmez.
onDetach() : Fragmentin host activitysinden ayrıldığını bildirmek için onDestroy()’dan sonra çağrılır