为什么屏幕旋转后,当我们在onAttach中创建ViewModel时,总是为片段提供新的ViewModel?
我试图在我身边挖掘,但我找不到答案我注意到的是: ViewModel存储在ViewModelStore中,由HolderFragment持有。 这个HolderFragment标记为保留一个片段,因此他必须存活到配置更改并且不会调用onDestroy()(但仍然会onDetach(),因为片段正在与其当前活动分离。)
但在我们的情况下,调用onDestroy并清除ViewModelStore。正如你在HolderFragment#onDestory方法中看到的那样
@Override
public void onDestroy() {
super.onDestroy();
mViewModelStore.clear();
}
如果我的分析很好,真正的问题是为什么在配置改变后调用HolderFragment#onDestroy,即使他被标记为保留?
同样的问题已修复here,您会发现我的评论。