a.t*_*aby 3 android-savedstate android-viewmodel viewmodel-savedstate
我按照下一页中的说明创建了一个 viewModel,但当SavedStateHandle我关闭应用程序并再次打开它时,它不起作用。
这是页面:
这是我的视图模型类:
class UserViewModel(private val state : SavedStateHandle) : ViewModel(){
val userId: LiveData<String> by lazy {
state.getLiveData("userId")
}
fun setUserId(userId : String) {
state["userId"] = userId
}
val user : User by lazy {
User("")
} }
Run Code Online (Sandbox Code Playgroud)
以下是我在活动中使用 viewModel 的方式。
val userViewModel : UserViewModel by viewModels()
Run Code Online (Sandbox Code Playgroud)
我什至在我的活动中尝试过这个,但这也不起作用!
val userViewModel: UserViewModel by viewModels {
SavedStateViewModelFactory(
application,
this
)
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能将数据持久化SavedStateHandle?我的意思是,打开应用程序后state仍然是空的。
- - 编辑: - -
系统似乎分两步释放内存,而 SavedStateHandle 仅在第一步中保留数据:
结论:如果您想在第 2 步中保留数据,请使用比 SavedStateHandle 更持久的东西。
---- 编辑结束 ----
我做了与代码实验室类似的事情(https://developer.android.com/codelabs/android-lifecycles#6)。
正如OP所描述的那样(对我来说)将LiveData存储在SavedStateHandle中没有任何区别。当系统完成应用程序时(编辑,原文是:杀死进程),存储在 SavedStateHandle 中的 LiveData 消失了。
我没有更改任何依赖项。我使用的是Arctic Fox 2020.3.1中的模板(底部导航模板)。它编译良好,将 SavedStateHandle 添加到 AndroidViewModel 子类,但它不保存 LiveData。
| 归档时间: |
|
| 查看次数: |
5667 次 |
| 最近记录: |