Android Flow (repeatOnLifecycle)
Selamlar herkese bugünkü yazımız basit ama bence önemli bir noktaya değiniyor sizinle de paylaşmak istedim. Umarım benim gibi bir aydınlanma yaşarsınız :)
Bu konuda asıl endişemiz memory ve cihaz kaynaklarını gereksiz kullanmamak olacak. Önce normal kullanımı örneklendireceğim sonrasında işimizi çözecek olacak repeatOnLifecycle’a değineceğim.
Standart Örnek
Aslında bu kod bloğu sorunsuz gibi görünebilir ama şöyle bir sorun oluşuyor eğer collect ettiğimiz activity , fragment vs. kill olmaz ise arka tarafta collect etmeye devam edecektir. Update fonksiyonu içerisinde eğer 3 saniyeden önce başka bir activity’e finish etmeden geçersek söylediğim durum gerçekleşir.
RepeatOnLifecycle Örneği
Sadece collect ettiğimiz kısmı düzenliyoruz. Artık collect etme işlemimiz bulunduğumuz activity — fragment Start olduğunda başlayıp Pause olduğunda collect etmeyi durduracak. Böylelikle ui’da göstereceğimiz bir data ise gereksiz yere gösteremeyeceğimiz datayı handle etmiş olmayacağız.
Lifecycle.State.STARTED → Start’da başlar ve Pause’da biter.
Lifecycle.State.CREATED → Create’de başlar ve Stop’da biter.
Lifecycle.State.DESTROYED → Destroy öncesinde çalışır.
Lifecycle.State.INITIALIZED → Create öncesinde çalışır.
Lifecycle.State.RESUMED→ Resume öncesinde çalışır.
https://medium.com/androiddevelopers/a-safer-way-to-collect-flows-from-android-uis-23080b1f8bda