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)
        }
    }
}

相关内容

热门资讯

1分钟辅助!禅游指尖四川修改器... 1分钟辅助!禅游指尖四川修改器,果然有辅助方法(有挂总结)1、这是跨平台的禅游指尖四川修改器轻量版有...
第一分钟辅助!情怀西游辅助,好... 第一分钟辅助!情怀西游辅助,好像是有辅助教程(有挂方法)1、全新机制【情怀西游辅助ai辅助工具激活码...
第十分钟辅助!新老夫子脚本,果... 第十分钟辅助!新老夫子脚本,果然是真的有辅助工具(有挂规律)1.新老夫子脚本 选牌创建新账号,点击进...
7分钟辅助!淘宝的微乐辅助是真... 7分钟辅助!淘宝的微乐辅助是真的吗,总是存在有辅助脚本(有挂解密)1、完成淘宝的微乐辅助是真的吗辅助...
九分钟辅助!小程序财神十三张祈... 九分钟辅助!小程序财神十三张祈福,一贯真的是有辅助挂(真的有挂)1、小程序财神十三张祈福破解器简单,...
三分钟辅助!创游世界辅助器,好... 三分钟辅助!创游世界辅助器,好像真的是有辅助技巧(竟然有挂)创游世界辅助器能透视中分为三种模型:创游...
七分钟辅助!约局吧作弊,原来是... 七分钟辅助!约局吧作弊,原来是真的有辅助挂(有挂规律)1、约局吧作弊公共底牌简单,约局吧作弊透视插件...
两分钟辅助!微信小程序游戏修改... 两分钟辅助!微信小程序游戏修改器,果然有辅助挂(果真有挂)1、微信小程序游戏修改器破解器简单,微信小...
第7分钟辅助!边锋干橙眼辅助器... 第7分钟辅助!边锋干橙眼辅助器名称,切实真的是有辅助软件(有挂规律)1.边锋干橙眼辅助器名称 选牌创...
5分钟辅助!打两圈绝对有辅助,... 5分钟辅助!打两圈绝对有辅助,确实存在有辅助挂(有挂存在)打两圈绝对有辅助是不是有人用挂微扑克wpk...