Android Flow (repeatOnLifecycle)

Buğra Yetkin
2 min readFeb 20, 2022

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 activityfragment 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.DESTROYEDDestroy öncesinde çalışır.
Lifecycle.State.INITIALIZEDCreate öncesinde çalışır.
Lifecycle.State.RESUMEDResume öncesinde çalışır.

https://medium.com/androiddevelopers/a-safer-way-to-collect-flows-from-android-uis-23080b1f8bda

--

--