目前我想创建一个具有某种注册和付款流程的应用。
我使用MaterialStepper library有一个Activity
,其中Fragments
代表流程中的一个步骤。
Activity
包含Android架构组件ViewModel,ViewModel
包含Fragment
的多个属性。我对输入字段使用LiveData和双向Databinding。
有些数据会在几个Fragments
中重复使用,这就是为什么我只使用一个ViewModel
来表示几个片段。
当应用程序位于前台时,它会按预期工作,Fragments
会重新创建并且字段会保留其值。
现在我的问题是暂停活动并稍后恢复。 ViewModel
本身也可以重新创建,因此会丢失其数据。
在这种情况下避免数据丢失的好方法是什么?
我在article中读到您应该在onSaveInstanceState
中存储一些值(例如,搜索查询以重新创建ViewModel
)。但在我的情况下,对于~30个输入字段来说,情况并非如此?)
当用户编辑输入字段并观察LiveData
对象时,Room数据库是否是在数据库中插入/更新值的好方法? (遗憾的是,我还没有Room
的经验)
我会很高兴任何帮助或例子(: