Sobes.tech
Middle

Android mimari bileşenlerinde ViewModel durumunu nasıl saklarım?

sobes.tech yapay zeka

AI'dan gelen yanıt

ViewModel'in durumunu, işlem sonlandığında bile hayatta kalmasını sağlayan SavedStateHandle kullanılır.

SavedStateHandle, Activity veya Fragment'in kaydedilen durumu ile ilişkili Map-benzeri bir depolamadır.

Çalışma prensibi:

  1. ViewModel, yapıcıya SavedStateHandle parametresi olarak alınır.
  2. Veriler, set() yöntemi kullanılarak SavedStateHandle'a kaydedilir.
  3. Activity/Fragment geri yüklendiğinde, kaydedilen veriler otomatik olarak ViewModel'in SavedStateHandle'ında erişilebilir olur ve yeniden oluşturulur.

Kullanım örneği:

class MyViewModel(private val state: SavedStateHandle) : ViewModel() {

    private val _myValue = state.getLiveData<String>("myKey")
    val myValue: LiveData<String> get() = _myValue

    fun saveValue(newValue: String) {
        state.set("myKey", newValue)
    }
}

SavedStateHandle, Int, String, Boolean gibi temel tiplerin yanı sıra parcelable ve serializable nesnelerin kaydını da destekler.

Önemli olan, SavedStateHandle'ın küçük miktarda UI ile ilgili veriyi saklamak için tasarlandığını anlamaktır. Daha karmaşık veya büyük veri setleri için Room Database veya DataStore gibi diğer mekanizmalar kullanılmalıdır.