旋转屏幕时保留具有片段范围的 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 中。