Android/Room/ViewModel:将ViewModel保存到Room数据库时出错
创始人
2024-08-20 07:30:10
0

此问题可能是由于ViewModel在保存之前已被销毁而导致的。为了解决这个问题,可以使用带有SavedStateHandle的ViewModel。

首先,使用SavedStateHandle创建一个带有状态的ViewModel:

class MyViewModel(private val state: SavedStateHandle) : ViewModel() {
    // 声明需要保存的状态变量
    var variable1: String = ""
    var variable2: Int = 0
    
    // 在onCleared()中保存状态变量
    override fun onCleared() {
        super.onCleared()
        state.set("variable1", variable1)
        state.set("variable2", variable2)
    }
}

然后,在使用ViewModel时,通过SavedStateViewModelFactory来创建一个带有SavedStateHandle的ViewModel:

val myViewModel: MyViewModel by viewModels {
        SavedStateViewModelFactory(requireActivity().application, this)
    }

最后,在使用Room数据库时,在onCleared()中保存ViewModel的状态:

override fun onCleared() {
    super.onCleared()
    viewModelScope.launch {
        withContext(Dispatchers.IO) {
            repository.saveData(myViewModel.variable1, myViewModel.variable2)
        }
    }
}

相关内容

热门资讯

黑科技辅助挂!微扑克计算器,w... 黑科技辅助挂!微扑克计算器,wpk ai机器人,攻略教程(有挂助手);1、构建自己的微扑克辅助插件;...
黑科技辅助挂!微扑克线上,德扑... 黑科技辅助挂!微扑克线上,德扑之星如何分别是否,总结教程(有挂讲解);暗藏猫腻!德扑之星如何分别是否...
黑科技辅助挂!德扑ai训练,智... 黑科技辅助挂!德扑ai训练,智星德州菠萝外挂,德州教程(有挂方针)是一款可以让一直输的玩家,快速成为...
黑科技辅助挂!红龙扑克有挂,德... 黑科技辅助挂!红龙扑克有挂,德扑之星真的太假了,解密教程(发现有挂)是一款可以让一直输的玩家,快速成...
黑科技辅助挂!德扑数据软件,德... 黑科技辅助挂!德扑数据软件,德州ai人工智能软件免费,解密教程(有挂透视);黑科技辅助挂!德扑数据软...
黑科技辅助挂!德州之星辅助器哪... 黑科技辅助挂!德州之星辅助器哪里买,wpk透视辅助效果展示,wepoke教程(有挂技巧)是一款可以让...
黑科技辅助挂!微扑克透明挂,a... 您好:aapoker软件有猫腻这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多...
黑科技辅助挂!WePoKe有挂... 黑科技辅助挂!WePoKe有挂,wepoke软件能玩,线上教程(详细教程);1、界面简单,没有任何广...
黑科技辅助挂!wpk脚本,云扑... 黑科技辅助挂!wpk脚本,云扑克辅助器可以卖,解密教程(真的有挂)是一款可以让一直输的玩家,快速成为...
黑科技辅助挂!wepoke有挂... 黑科技辅助挂!wepoke有挂的,wpk有长期盈利玩家,科技教程(有挂细节);wpk有长期盈利玩家 ...