Android LiveData

Özgür Can
2 min readOct 9, 2021

Merhabalar, Bugün Android LiveData hakkında biraz konuşup, MVVM bir proje’de coroutine ile birlikte liveData kullanımı yapacağız. Umarım faydalı bir yazı olur. Hazırsanız hadi başlayalım.

Architecture Components(mimari bileşenler) den olan LiveData’ya geçmeden önce, Observer Design Patern hakkında bilgi sahibi olmamız gerekiyor.

Observer (Gözlemci) Design Pattern

Observer Design Pattern ile, bir yapıdaki değişiklikle beraber farklı yapıların bu değişiklikten haberdar olup, değerlerinde veya işlemlerinde değişikliğe gitmesidir.
-Oturmayanlar için bir örnek ile şöyle açıklamalıyım. Bir inşaat atölyesi düşünün. Bunları kontrol etmesi için başlarında 1 yönetici olsun. Dolayısıyla olan bütün gelişmeleri firma sahibine bildirir. Birebir bir örnek olmadı ama herhangi bir değişiklikte hemen bildirdiğini göz önünde bulundurursak biraz daha kafanızda canlanacaktır.

LiveData Nedir?

LiveData Android Jetpack öğesidir.
-Observe(gözlemci)
-Observable(gözlemlenen)
Temelde 2 farklı yapısı mevcuttur. LiveData sayesinde projelerimizde, bir fonksiyonda veya değişkende oluşabilecek değişimi gözlemleyip bu değişimden etkilenmesini istediğimiz yapıları observe ettiğimiz yerden kontrol edebiliriz. LiveData ise bizlere bu değişikliği bildirir. Yukarıda verdiğimiz örneği baz alırsak “az önce şunları yaptık artık yeni halimiz bu müdürüm” diyen birini düşünebiliriz. Her zaman güncel verileri tutar. UI ile ViewModel arasında haberleşmeyi sağlar.

Yazılım mimarilerini kullanmaya başlayınca, başlıca sorunların ortaya çıktığını gözlemleriz. Oluşan sorunlara çözüm olarak ise Dependency Injection, LiveData, ViewModel gibi çeşitli yapılar geliştirilmiştir.

Aslında biraz daha irdelemek istersek, SOLID programlamanın Single Responsibility Principle maddesi bizleri bir Mimari yapıyı kullanmaya teşvik eder. Çünkü bu madde bir sınıfın veya fonksiyonun yapması gereken yalnızca bir işi olması gerektiğini savunur. Bu noktada MVVM,MVP,MVC gibi çeşitli Yazılım Mimarileri kullanılır.

MVVM yazılım mimarisinde UI içerisinde Business Logic(BL) yer almamalıdır.Dikkat edilmesi gereken bir noktada
-Api Logic
-Business Logic
Bizler de BL tanımlamalarını ViewModel içerisinde gerçekleştiririz. Fakat UI ile ViewModel arasında haberleşmenin ve değişikliklerin yakalanması için bir yapıya ihtiyacımız var bu noktada LiveData ihtiyacımızı karşılıyor.

Şöyle bir işlem düşünelim, geliştirdiğimiz projede uzak sunucu işlemlerini asenkron olarak gerçekleştiriyoruz(coroutine). Peki biz işlemlerimize devam ederken, uzak sunucudan gelen datalardan nasıl haberdar olup, bu datalar üzerinden işlem gerçekleştireceğiz? işte bu noktada LiveData “O iş bende” diyor.

Memory Leak yoktur, bağlı olduğu UI lifecycle sonlandığında memory den silinir. Single Activity prensibini kullanıyorsanız, owner tanımlamasına dikkat etmeniz gerekmektedir. Farklı fragmenet’lar üzerinde işlem yaparken bile kullanmayacağınız LiveData’lar Memory’de kalmaya devam edecektir.

LiveData’lar bağlı oldukları UI’ların yaşam döngüleri sonlanmadıkça çalışmaya devam ederler. Örnek olarak uygulamamızı arka plana aldık onStop da bekliyoruz. Fakat LiveData işlemlerini yapmaya devam ediyor.

Örneklendirmesini bir sonraki “Coroutines” makalesinde birlikte görebilirsiniz.

--

--