6

Android 架构组件提供了LiveDataViewModel类,这些类对生命周期更友好,专为更精简的 Activity/Fragment 而设计。这些类处理跨配置更改的数据存储,但与 Activity 框架 API 相比,我对它们的使用感到困惑。对于保持活动状态是否 仍然必要onSaveInstanceState(Bundle)或有用?onRestoreInstanceState(Bundle)

4

2 回答 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 AAndroid 操作系统尝试创建新对象。因此,您在.AcivityViewModelViewModel

但是 savedInstanceState 中的值仍然存在。

于 2019-07-29T20:18:40.000 回答