【发布时间】:2022-10-05 13:43:00
【问题描述】:
viewModel 如何保留由于配置更改而不是当我们尝试重新实例化活动时的数据。
ViewModel 对象的作用域是在获取 ViewModel 时传递给 ViewModelProvider 的生命周期。 ViewModel 会一直保留在内存中,直到其范围内的生命周期永久消失
viewModel = ViewModelProviders.of(this)[MainActivityViewModel::class.java]这里这个是生命周期所有者 MainActivity。
旋转/配置更改之前: 旋转/配置更改后:我们可以在这里清楚地看到活动实例(所有者)和生命周期在轮换后发生了变化。那么为什么它只在配置更改时保存数据。同时,当我尝试手动创建相同活动的新实例以重新创建此场景时,视图模型未保留数据。
视图模型是否保留数据的决定性参数是什么。
以及为什么 viewModel 只为配置更改而不是为相同活动的新实例保留数据。
【问题讨论】:
-
@CommonsWare 文档仍然没有回答问题
-
恕我直言,确实如此。 Jetpack
ViewModel处理配置更改。如果您使用SavedStateHandle,JetpackViewModel也可以处理特定类型的进程终止场景(内存不足杀手)。这就对了。
标签: android android-jetpack android-viewmodel android-mvvm