Fragment Result API, LiveData'dan Neden Daha İyi Veri Geçiyor

Android'de fragment'lar arasında veri geçmek uzun yıllar LiveData'ya bağımlı kaldı. Ama Fragment Result API gelişince bu işin prensibi değişti. İkisini karşılaştırdığında fark açık: Fragment Result, fragment'ın yaşam döngüsüne bağlı olmayan, doğrudan event tabanlı bir çözüm sunuyor.

LiveData'nın ana sorunu şu: bir fragment'tan diğerine veri gönderirken, alıcı fragment'ın observer'ı kurulana kadar veri kaybı riski vardır. Gönderici fragment yok olursa, LiveData da ortadan kaybolabilir. Ayrıca LiveData'yı ViewModel aracılığıyla paylaşmak zorunda kalırsın, bu da parent activity'ye bağımlılık yaratır. Kod karmaşıklaşır.

Fragment Result API ise çok basit: gönderici `setFragmentResult()` ile bir key ve Bundle gönderir, alıcı `setFragmentResultListener()` ile dinler. Sistem fragment'ların yaşam döngüsünü yönetir. Alıcı fragment yok olunca listener otomatik temizlenir. Memory leak riski neredeyse sıfıra iner.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Pratik örnek: bir listeyi seçim ekranından ana ekrana geri dönerken Fragment Result çok daha temiz. Activity aracısına ihtiyaç yok, ViewModel oluşturmana gerek yok. Sadece sonuç listener'ını kurarsın ve bitir. LiveData ile aynı işi yaparsak, ViewModel'i setup etmek, observer'ı yönetmek, fragment'lar yok olunca cleanup yapmak gerekir.

Bir avantaj daha: Fragment Result API, fragment'lar arasında iletişimi açık ve izlenebilir kılıyor. Kod okuyan birisi hemen anlar ki bu fragment'tan şu fragment'a veri akıyor. LiveData ile gizli bir bağlantı oluşur, debug etmek zor hale gelir.

Tabii LiveData'nın da yeri var. Reactive UI güncelleme için, sürekli değişen veri için LiveData hala tercih edilebilir. Ama fragment'lar arası tek seferlik ya da nadir veri geçişi için Fragment Result API'yi tercih etmen gerekir. Kod daha sade, memory daha güvenli, bakım daha kolay olur.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz