我的应用中的生命周期存在问题。有一些代码将片段提交给片段管理器:
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, mModuleFragment)
.commit();
您可以在应用程序中执行某些操作以运行上述代码(即提交片段),如果使用主页按钮,则会导致崩溃。我已经查看了堆栈跟踪,这是我认为正在发生的事情:
1)片段替换被提交到片段管理器,片段管理器根据文档作为异步任务运行
2)运行onSaveInstanceState
以保存活动的状态,然后运行android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613)
- 用
确保现在已执行所有待处理操作 我们的州更新至今。
3)替换片段的待处理操作(因为它尚未处理)并且当活动已经处于停止状态时崩溃并且我没有考虑到这一点。
我可以通过检查null并从方法返回来防止我的崩溃,但是感觉就像在那一点创建片段是不必要的。有没有办法避免这种情况,比如告诉FragmentManager
删除所有挂起的交易?