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:
ViewModel, yapıcıyaSavedStateHandleparametresi olarak alınır.- Veriler,
set()yöntemi kullanılarakSavedStateHandle'a kaydedilir. - Activity/Fragment geri yüklendiğinde, kaydedilen veriler otomatik olarak
ViewModel'inSavedStateHandle'ı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.