android - 初始化后如何保存变量的值
问题描述
我有一个 LiveData 变量,每次用户触发某些事件时,它的值都会增加 1。
我想保存该值,例如,如果用户触发 1 个事件并关闭应用程序并重新打开它,则变量值保持 1,而不是每次重新创建 ViewModel 时都重置为初始值 0。
private val counter = MutableLiveData<Int>().apply {
value = 0
}
fun counterPlus(){
counter.value = _counter.value!!.plus(1)
}
解决方案
您希望将数据保存到持久存储中。Android 中有三个常用选项:文件、SQLite 数据库和 SharedPreferences。对于您的用例,也许 SharedPreferences(一种key-value
存储机制)是一个不错的选择,因为它很简单。
一旦你决定了,下一步就是找到一个地方/时刻将你的数据保存到存储中。
例如,假设您决定使用 SP,您可以保存onPause
并加载:onResume
// In on pause
context.getSharedPreferences(...).edit().putInt("myValueKey", counter.value).apply();
要加载,过程非常相似:
context.getSharedPreferences(...).getInt("myValueKey", defaultValue)
检查https://developer.android.com/training/data-storage/shared-preferences#kotlin
推荐阅读
- gradle - 显示 mapstruct 注释处理器是否创建文件的消息 - 更适合我的自定义“generateMappers”任务
- excel - VBA:在 Excel 中复制图表
- c# - 创建给定类型的空枚举
- javascript - 从多个元素设置值
- python-3.x - 为什么在这段代码中跳过了一些 for 循环的迭代?
- certificate - 身份提供者是否忽略了 SAML 规范,或者不需要对注销请求和响应进行签名?
- dictionary - 为什么这个字典功能不起作用
- qliksense - 在绘图中使用多个度量时,双重功能不起作用
- java - Spring ServletFileUpload 迭代器返回空列表
- javascript - 如何将否定的lookbehind转换为与ES5兼容的表达式