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