我正在编写一个存储值的应用程序,该值被用户杀死。它存储在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
These values will persist after the process is killed by the system and remain available via the same object.
不会在用户终止应用程序之后。
您可以将数据存储在
SharedPreference
或本地数据库中
关于android - 为什么在使用SavedStateHandle之后我的数据仍然无法保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63931757/