我正在编写一个存储值的应用程序,该值被用户杀死。它存储在ViewModel中,并保存在onClear函数中。我希望能够重新打开应用程序并查看保存的值,但是当我使用指定的键访问此值时,它返回为null。这是我的代码

package com.example.sharedexpenseapp

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.navigation.NavController
import com.loopj.android.http.AsyncHttpClient
import com.loopj.android.http.TextHttpResponseHandler
import cz.msebera.android.httpclient.Header

class MainActivityViewModel constructor (private val savedState: SavedStateHandle): ViewModel() {

    companion object {
        private const val NAME= "NAME"
    }

    //LiveData for HomePageFragment
    private val liveName = MutableLiveData<String>(getName().value)
    internal val name: LiveData<String>
        get() = liveName

    internal val orientation = MutableLiveData<Int>()

    internal var navController: NavController? = null

    //LiveData for LoginFragment
    internal val liveNameEditText = MutableLiveData<String>()

    internal fun saveName(name: String?) { liveName.value = name; name?.let { savedState.set(NAME, it) }}

    private fun getName(): MutableLiveData<String> { return savedState.getLiveData(NAME) }

    override fun onCleared() {
        liveName.value?.let { saveName(it) }
        super.onCleared()
    }

}
我的代码中的大多数功能已被省略,但其中包含了saveState部分。我有做错或误解的事情吗?
编辑:
我现在知道SavedStateHandle仅在系统终止进程时才保留。除了使用SavedStateHandle之外,在用户关闭应用程序后,是否可以使用其他任何数据类型或技术来保存数据?

最佳答案

按照SavedStateHandle上的官方doc

不会在用户终止应用程序之后。
您可以将数据存储在SharedPreference或本地数据库中

10-04 21:20
查看更多