Android 架构组件提供了LiveData
和ViewModel
类,这些类对生命周期更友好,专为更精简的 Activity/Fragment 而设计。这些类处理跨配置更改的数据存储,但与 Activity 框架 API 相比,我对它们的使用感到困惑。对于保持活动状态是否 仍然必要onSaveInstanceState(Bundle)
或有用?onRestoreInstanceState(Bundle)
android - 使用 Android 架构组件 LiveData & ViewModel 时是否需要使用 onSaveInstanceState 和 onRestoreInstanceState?
问问题
927 次
2 回答
3
onSaveInstanceState 和 onRestoreInstanceState 仍然有用。
ViewModel 仅在进程处于活动状态时保存数据。
但是,即使进程被杀死,onSaveInstanceState 和 onRestoreInstanceState 也可以保存数据。
ViewModel 易于使用,可用于在屏幕方向更改时保存大数据。
onSaveInstanceState & onRestoreInstanceState 可以在进程处于后台时保存数据。(在后台,应用程序进程可以随时被系统杀死。)
于 2017-07-03T04:20:21.137 回答
1
假设一个场景:用户在activity A
,然后导航到activity B
但是由于内存不足,Android OS 会损坏activity A
,因此ViewModel
与之相连的也会损坏。(您可以通过签Don't keep activities
入开发人员选项来模拟它)
现在用户导航回,activity A
Android 操作系统尝试创建新对象。因此,您在.Acivity
ViewModel
ViewModel
但是 savedInstanceState 中的值仍然存在。
于 2019-07-29T20:18:40.000 回答