gpt4 book ai didi

java - BackPress 时 ViewModel 数据丢失

转载 作者:行者123 更新时间:2023-12-01 19:06:18 25 4
gpt4 key购买 nike

首先我想说声抱歉。我是 MVVM 的新手。我想知道如何保留viewmodel中的数据??

例如,我遵循了此 Codelab 教程 https://codelabs.developers.google.com/codelabs/android-lifecycles/#0 .

  1. 我尝试终止应用程序然后返回应用程序,但数据未保存。为什么?

  2. 我试图通过 Intent 来创建新的 Activity 。我在新 Activity 中实现了与 statelifecycle 相同的代码。但是为什么当我回按并尝试输入新 Activity 时数据没有保存?

最佳答案

回答您的问题:

  1. ViewModel 中的数据仅在 Activity 的整个生命周期中保留。因此,如果您的应用程序死机,您的数据不会保存。如果您希望它持久存在,请考虑集成离线数据持久库,例如 Room,或者您也可以根据您的用例使用 SharedPreferences

    <
  2. 根据这篇文章:Android LiveData - how to reuse the same ViewModel on different activities?

When you call ViewModelProviders.of(this), you actually create/retain a ViewModelStore which is bound to this, so different Activities have different ViewModelStore and each ViewModelStore creates a different instance of a ViewModel using a given factory, so you can not have the same instance of a ViewModel in different ViewModelStores

换句话说,不同的 Activity 不能共享同一个 ViewModel。因此,如果您想在切换页面的同时保留 ViewModel 中的数据,请考虑在 Activity 中使用 fragment 。

关于java - BackPress 时 ViewModel 数据丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59549797/

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