gpt4 book ai didi

android - 为什么在使用SavedStateHandle之后我的数据仍然无法保存?

转载 作者:行者123 更新时间:2023-12-02 13:25:55 31 4
gpt4 key购买 nike

我正在编写一个存储值的应用程序,该值被用户杀死。它存储在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 systemand remain available via the same object.


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

关于android - 为什么在使用SavedStateHandle之后我的数据仍然无法保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63931757/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com