Android LiveData Kullanımı

Selamlar, Android Architecture Components’in bir bileşeni olan LiveData’yı öğrenip, örnek yapacağız. Hazırsanız haydi başlayalım. 🤓

Android Architecture Components, veri tutarlılığını, lifecycle’ı kolayca yönetebilmemizi, uygulamanın modüler olması, memory leak’lerden kaçınmamızı ve tekrarlı kodlardan kurtulmamıza yaran birçok özelliği barındıran araçlardır.

Android LiveData
  • LiveData, Observable(gözlemlenebilir) veri tutma sınıfıdır.

Observer Pattern: Multi threads oluşturup, sıralı işlemler yapabilmeyi, verilere filtreleme işini kitlenmeden, sorunsuzca yapmasını sağlar.

  • LiveData, Lifecycle-Aware yapıdadır.
Lifecycle-Aware Component

Lifecycle-Aware: Activity, Fragment, Servis gibi bileşenlerin yaşam döngüsünün bilincinde olan, döngü içindeki değişikliğe yanıt olarak bazı eylemler üreten bir bileşendir.

  • Lifecycle state’in STARTED veya RESUMED olduğu durumlarda Observer güncellemelerden haberi olur.
  • Observer, LifecycleOwner interface’ini implement ederek bir object vasıtasıyla kayıt altına alabilir.
  • İlgili component’in state’i DESTROY durumuna geçtiği zaman LifecycleOwner ile observer arasındaki birlikteliğin sonlanmasını sağlar.

LiveData Neden Kullanılmalı 🤨

Why use LiveData?
  1. Her zaman güncel veriler barındırır: Lifecycle pasif duruma geçmesi durumunda aktif olana dek son kaydedilen veriler kolayca kullanılabilir.
  2. Memory Leak bulunmamaktadır: Observer, Lifecycle objelerine bağlı çalıştığı için ilgili componentler DESTORY durumuna geçince clean işlemini otomatik bir şekilde yapar.

Memory Leak: Programın kullanıldığı memory ile işi bitmesine rağmen memory bloğunu serbest bırakmaması durumudur.

3. Stop olmuş Activity’lerde crashleri önüne geçer: Activity stop haldeyse LiveData event’iyle alakalı güncelleme ya da başka bir işlem yapılmaz.

Activity Lifecycle dikkat edilmesi gereken bir konu, göz atabilirsiniz:

4. Configuration değişikliklerinden etkilenmemesi: Fragment veya Activity’deki screenOrientation değeri portrait den landscape moda geçtiğinde herhangi bir kayıp olmadan veriler kullanılmaya devam edilir.

Android Manifest’le alakalı detaylı bilgi için inceleyebilirsiniz:

5. UI ile data state eşleşmesini sağlar: UI güncellemesini defalarca yapmak yerine Observer bizim yerimize her seferinde kendisi yapar.

Deneyimleme Zamanı 👀

Öğrendiklerimizi denemek için basit bir örnek yapacağız. Button’a click yapılınca text değerini arttırıp ekranda göstereceğiz. LiveData sayesinde ekranı yatay ya da dikey moda aldığımızda değerin korunduğunu göreceğiz.

Öncelikle LiveData’yı kullanabilmemiz için dependency eklememiz gerekir:

implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

Basitçe tasarım yapıyoruz. Ekranda sadece TextView, Button olacak.

UI kısmında button’a tıklanınca değerin arttırılması için gerekli işlemleri ViewModel içinde ayarlıyoruz.

MainActivity içinde içeriklere ulaşmak için ViewModel nesnesi tanımladık. ViewModel içinde counter değeri 0 olarak atandı. Her click’te getCounter() metodu çağrılıp değeri +1 arttırılacaktır. LiveData sayesinde bu değişken değeri gözlemlenir ve herhangi bir kayıp olmadan screen’i yatay veya dikey moda alsak bile yoluna devam eder.

Tebrikler başarılı bir şekilde işlemimizi tamamladık. 🎉

Detaylı bilgi için linki ziyaret edebilirsiniz:

https://developer.android.com/topic/libraries/architecture/livedata

Herkese huzurlu, mutlu, sağlıklı, başarılı bir yıl dilerim. 🥳 🥰

Android Developer 👨🏻‍💻