Иногда я вижу следующий стек для фиксации, который может произойти, когда пользователь не смотрит на активность (после сохранения состояния):
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1327)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1338)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)
Глядя на источник Android, это имеет смысл:
private void checkStateLoss() {
if (mStateSaved) {
throw new IllegalStateException(
"Can not perform this action after onSaveInstanceState");
}
if (mNoTransactionsBecause != null) {
throw new IllegalStateException(
"Can not perform this action inside of " + mNoTransactionsBecause);
}
}
Теперь, интересно, есть ли какой-либо способ (помимо хранения переменной класса в on (Save/Restore) InstanceState), чтобы проверить, будет ли фрагмент собираться в нежелательном состоянии, таким образом я могу хранить транзакцию для позже и совершите фиксацию в соответствующее время.