Halil Özel

Dec 27, 2021

3 min read

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 veya olduğu durumlarda Observer güncellemelerden haberi olur.
  • Observer, interface’ini implement ederek bir object vasıtasıyla kayıt altına alabilir.
  • İlgili component’in state’i durumuna geçtiği zaman 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 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 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 değeri den 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. içinde counter değeri 0 olarak atandı. Her click’te metodu çağrılıp değeri +1 arttırılacaktır. 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 👨🏻‍💻

Love podcasts or audiobooks? Learn on the go with our new app.