by viewModel
- Kotlin kursu
- İleri seviye
- Ders 41/83
- 5 dk
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
// viewModel delegate
// buraya yaz
import org.koin.androidx.viewmodel.ext.android.viewModel
fun main() {
}Örnek çözüm
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
class MyActivity : AppCompatActivity() {
val vm: MyViewModel ____()
}
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ı |