旋转屏幕时保留具有片段范围的 ViewModel
Retain ViewModels with fragment scope while rotating screen
我们正在使用支持库 v 25.+
和新的架构组件 v 1.0.0-alpha3
,我们发现片段范围内的 ViewModels 没有正确保留:
class MyFragment : LifecycleFragment() {
protected lateinit var viewModel: MyViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = ViewModelProviders.of(this).get(MyViewModel::class.java)
}
}
每次应用旋转时基本上都会重新创建 viewModel。这可以通过更改为 google 示例中使用的 onActivityCreated
来解决。
由于文档指出使用 onCreate
我希望这是一个片段或 ViewModelProvider
错误。
在咨询 Android 团队后,我们发现这确实是 SupportFragmentManager
中的一个问题,已在 v 26.+
中解决,因此切换到
26.0.0-beta2
有帮助,现在 ViewModels 按预期保留在 onCreate
中。
我们正在使用支持库 v 25.+
和新的架构组件 v 1.0.0-alpha3
,我们发现片段范围内的 ViewModels 没有正确保留:
class MyFragment : LifecycleFragment() {
protected lateinit var viewModel: MyViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = ViewModelProviders.of(this).get(MyViewModel::class.java)
}
}
每次应用旋转时基本上都会重新创建 viewModel。这可以通过更改为 google 示例中使用的 onActivityCreated
来解决。
由于文档指出使用 onCreate
我希望这是一个片段或 ViewModelProvider
错误。
在咨询 Android 团队后,我们发现这确实是 SupportFragmentManager
中的一个问题,已在 v 26.+
中解决,因此切换到
26.0.0-beta2
有帮助,现在 ViewModels 按预期保留在 onCreate
中。