在我的ViewModel中,我已经建立了这样的建议:
类MyViewModel(私有Val SavedStateHandle:SavedStateHandle):ViewModel {
private var _wrongNumbers: ArrayList<CalculationEntity> = savedStateHandle.get<ArrayList<CalculationEntity>>("MY_KEY") ?: arrayListOf()
set(value) {
field = value
savedStateHandle["MY_KEY"] = value
}
然后,然后将元素添加到ViewModel内部的该数组列表:
fun addNumber(newNumber: Int) {
_wrongNumbers.add(newNumber)
}
,但是,在杀死该过程并恢复SavedStateHandle
后,
_wrongNumbers
arraylist是空的。为什么这会发生?
_wrongNumbers
实际上从未真正注册到
SavedStateHandle
add()
,因为您没有为其分配任何触发自定义设置器的值。调用MY_KEY
不会调用设置器。 SavedStateHandle
的进入,因此再次将其初始化为arrayListOf()
。
一旦您初始化了一次,就可以解决问题。之后,在过程死亡时,对此的任何修改都将被正确地拾取。 您可以在Init块中这样做:
_wrongNumbers