首页 > 解决方案 > 初始化后如何保存变量的值

问题描述

我有一个 LiveData 变量,每次用户触发某些事件时,它的值都会增加 1。

我想保存该值,例如,如果用户触发 1 个事件并关闭应用程序并重新打开它,则变量值保持 1,而不是每次重新创建 ViewModel 时都重置为初始值 0。

    private val counter = MutableLiveData<Int>().apply {
        value = 0
    }

    fun counterPlus(){
        counter.value = _counter.value!!.plus(1)
    }

标签: androidkotlin

解决方案


您希望将数据保存到持久存储中。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


推荐阅读