Arch组件:配置更改后不保留ViewModel

时间:2017-11-29 21:54:10

标签: android android-fragments android-architecture-components

为什么屏幕旋转后,当我们在onAttach中创建ViewModel时,总是为片段提供新的ViewModel?

我试图在我身边挖掘,但我找不到答案我注意到的是: ViewModel存储在ViewModelStore中,由HolderFragment持有。 这个HolderFragment标记为保留一个片段,因此他必须存活到配置更改并且不会调用onDestroy()(但仍然会onDetach(),因为片段正在与其当前活动分离。)

但在我们的情况下,调用onDestroy并清除ViewModelStore。正如你在HolderFragment#onDestory方法中看到的那样

@Override
    public void onDestroy() {
        super.onDestroy();
        mViewModelStore.clear();
    }

如果我的分析很好,真正的问题是为什么在配置改变后调用HolderFragment#onDestroy,即使他被标记为保留?

同样的问题已修复here,您会发现我的评论。

0 个答案:

没有答案