保留重新创建的ViewModel数据

时间:2018-02-20 10:21:08

标签: android android-room android-architecture-components android-livedata android-viewmodel

目前我想创建一个具有某种注册和付款流程的应用。

我使用MaterialStepper library有一个Activity,其中Fragments代表流程中的一个步骤。

Activity包含Android架构组件ViewModelViewModel包含Fragment的多个属性。我对输入字段使用LiveData和双向Databinding。 有些数据会在几个Fragments中重复使用,这就是为什么我只使用一个ViewModel来表示几个片段。

当应用程序位于前台时,它会按预期工作,Fragments会重新创建并且字段会保留其值。

现在我的问题是暂停活动并稍后恢复。 ViewModel本身也可以重新创建,因此会丢失其数据。

在这种情况下避免数据丢失的好方法是什么? 我在article中读到您应该在onSaveInstanceState中存储一些值(例如,搜索查询以重新创建ViewModel)。但在我的情况下,对于~30个输入字段来说,情况并非如此?)

当用户编辑输入字段并观察LiveData对象时,Room数据库是否是在数据库中插入/更新值的好方法? (遗憾的是,我还没有Room的经验)

我会很高兴任何帮助或例子(:

0 个答案:

没有答案