试图了解使用ViewModel保留活动或片段的某些状态并使用savedInstanceState包保存它们的区别。架构组件ViewModel vs. savedInstanceState包
给人的印象是,当活动/片段在配置变化的情况下被os破坏时,ViewModel实例保持活动状态,以便在os重新创建活动/片段时可以从仍然有效的ViewModel实例中获取数据。
它适用于最小化应用程序并重新打开它吗?
做了一些测试,似乎尽量减少了应用程序并重新打开了应用程序,os会在onCreate()中的stavedInstanceState包中重新创建活动/片段,而不是null(调用onSaveInstanceStae()时保存的任何内容) 。但是ViewModel已经被清除了,所以创建一个没有以前的数据的新实例。
这是否意味着虽然在这种情况下os可以检索保存的实例状态并传递给活动/片段的onCreate(),但ViewModel必须是没有先前实例数据的新实例,或者viewModel需要到一些额外的步骤来存储/恢复数据跨越实例?
官方文档回答您的问题:https://developer.android.com/topic/libraries/architecture/viewmodel.html#viewmodel_vs_savedinstancestate – vlazzle