Sobes.tech
Junior — Middle

Android, yapılandırma değişiklikleri veya yaşam döngüsü sırasında ViewModel durumunun korunma mekanizmasını nasıl uygular?

sobes.tech yapay zeka

AI'dan gelen yanıt

Android'de ViewModel, yaşam döngüsünü dikkate alarak UI verilerini depolamak ve yönetmek için tasarlanmıştır. Konfigürasyon değişiklikleri (örneğin, ekran döndürme) sırasında sistem Activity veya Fragment'i yok eder, ancak ViewModel korunur ve yeni örneklere tekrar atanır.

Bu, ViewModelProvider aracılığıyla sağlanır; bu, ViewModel'i bileşenin yaşam döngüsüne bağlar. ViewModel, sahibi (Activity/Fragment) ile ilişkili olduğu sürece bellekte tutulur. Bir bileşen, konfigürasyon değişikliği nedeniyle yok edildiğinde, ViewModel yok edilmez, yerine yeni bir örnekte yeniden kullanılır.

ViewModel içinde durumu saklamak için SavedStateHandle kullanılabilir; bu, süreç yok edilmesi veya konfigürasyon değişikliklerinin ötesinde durumları kaydetmeye ve geri yüklemeye olanak tanıyan özel bir nesnedir.

SavedStateHandle kullanım örneği:

class MyViewModel(private val state: SavedStateHandle) : ViewModel() {
    var counter: Int
        get() = state.get<Int>("counter") ?: 0
        set(value) = state.set("counter", value)
}

Bu şekilde, ViewModel konfigürasyon değişiklikleri sırasında verileri bellekte tutar ve SavedStateHandle, süreç yok edilmesi gibi daha ciddi olaylarda durumu korumaya yardımcı olur.