在app store开发者控制台上收到两个“Crashes& ANRs”,其中包含以下错误:
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1354)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1372)
我逻辑上发现了错误:我有一个异步回调用于发出和HTTP请求。如果我单击发出HTTP呼叫的按钮,然后单击返回(即关闭活动),我会收到此问题。
以下是导致此问题的代码:
ResponseErrorHandler errHdl = new ResponseErrorHandler();
DialogFragment dialogFragment = errHdl.HandelError(error, responseBody);
FragmentManager fragMan = getSupportFragmentManager();
dialogFragment.show(fragMan, TAG + "ErrorDialog");
因此,如果我正确理解发生的事情是我的活动正在关闭,然后对话框片段试图在活动消失时显示对话框。
我在活动结束时取消了我的网络请求:
@Override
protected void onStop() {
super.onStop();
Network.cancelRequests(ConnectingActivity.this);
}
答案 0 :(得分:1)
您可以在显示对话框之前检查活动is being closed/killed并采取相应措施。
E.g:
if (!parentActivity.isFinishing()) {
dialogFragment.show(fragMan, TAG + "ErrorDialog");
}
希望这有帮助。