CodeBlanks Logo Icon CodeBlanks

by viewModel

by viewModel() ile ViewModel enjeksiyonu öğrenirsin.

by viewModel nedir?

by viewModel(), bir Activity ya da Fragment içinde ViewModel almak için kullanılan Koin delegate'idir. AndroidX ViewModel ile çalışır.

Örnek: class MyActivity : AppCompatActivity() { val vm: MyViewModel by viewModel() }. Bu delegate, Activity yaşam döngüsüne bağlı olarak ViewModel'i tutar. Ekran döndüğünde ViewModel korunur; yeni Activity aynı ViewModel'i alır. viewModel modül tanımında da kullanılır: viewModel { MyViewModel(get()) }. Bu, ViewModel'in bağımlılıklarını Koin üzerinden almasını sağlar.

viewModel modül tanımı

Bir ViewModel'i Koin modülüne eklemek için viewModel { ... } kullanılır. single ya da factory yerine ViewModel'ler için bu tanım tercih edilir.

Örnek: module { viewModel { MyViewModel(get()) } }. Burada MyViewModel, get() ile başka bağımlılıklarını alır. viewModel bloğu, ViewModel'i yaşam döngüsüne bağlı tutar. Koin, ViewModel'in yaşam döngüsünü AndroidX ile uyumlu yönetir. Bu, bellek sızıntısını önler.

Uygulama by viewModel ile sınıf tanımla

class MyViewModel tanımla. class MyActivity tanımla; içinde val vm: MyViewModel by viewModel() olsun. main içinde println("ViewModel hazır") yazdır.

Başlangıç kodu

Main.kt
// viewModel delegate
// buraya yaz
import org.koin.androidx.viewmodel.ext.android.viewModel

fun main() {
    
}

Örnek çözüm

Main.kt
class MyViewModel

class MyActivity {
    val vm: MyViewModel by viewModel()
}

fun main() {
    println("ViewModel hazır")
}

Beklenen çıktı

ViewModel hazır

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 by viewModel çağrısını tamamla

Soru
class MyActivity : AppCompatActivity() {
    val vm: MyViewModel ____()
}
Cevap
class MyActivity : AppCompatActivity() {
    val vm: MyViewModel by viewModel()
}

Açıklama: by viewModel() ile ViewModel alınır.

2 by viewModel() ne zaman tercih edilir?

  • HTTP isteği atmak için
  • Veritabanı bağlantısı için
  • JSON serileştirmek için
  • Activity içinde ViewModel alırken Doğru cevap

Açıklama: by viewModel() ViewModel almak için kullanılır.

3 by viewModel parçalarını eşle

Kavram Anlamı
by viewModel ViewModel delegate
MyActivity Sahip sınıf
MyViewModel ViewModel
viewModel Modül tanımı

İleri seviye bölümündeki tüm dersler