为什么我的数据在使用 SavedStateHandle 后没有保留?

Why isn't my data persisting after using SavedStateHandle?

我正在编写一个应用程序,在它被用户杀死后存储一个值。它存储在 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()
    }

}

我的代码中的大部分功能都被省略了,但包含了 savedState 部分。有没有我做错或误解的地方?

编辑: 我现在明白 SavedStateHandle 只有在系统终止进程时才会存在。除了使用 SavedStateHandle,是否有任何其他数据类型或技术可用于在用户关闭应用程序后保存数据?

根据官方 docSavedStateHandle

These values will persist after the process is killed by the system and remain available via the same object.

不是在用户终止应用后。

您可以将数据存储在 SharedPreference 或本地数据库中