#android
#Android
Вопрос:
Я прочитал много похожих вопросов, но до сих пор не смог найти ответ.
У меня есть приложение, развернутое на рынке, и я получаю некоторые отчеты о сбое IllegalStateException через BugSnag. Но я не могу воспроизвести его со своей стороны, вся информация, которая у меня есть для этой проблемы, взята из BugSnag.
Трассировка стека для моей проблемы
java.lang.IllegalStateExceptionSplashScreenActivity
Can not perform this action after onSaveInstanceState
java.lang.IllegalStateException · Can not perform this action after onSaveInstanceState
FragmentManager.java:2044android.support.v4.app.FragmentManagerImpl.checkStateLoss
FragmentManager.java:2067android.support.v4.app.FragmentManagerImpl.enqueueAction
BackStackRecord.java:680android.support.v4.app.BackStackRecord.commitInternal
BackStackRecord.java:634android.support.v4.app.BackStackRecord.commit
FragmentTabHost.java:288android.support.v4.app.FragmentTabHost.onAttachedToWindow
View.java:20011android.view.View.dispatchAttachedToWindow
ViewGroup.java:3589android.view.ViewGroup.dispatchAttachedToWindow
ViewGroup.java:3596android.view.ViewGroup.dispatchAttachedToWindow
ViewGroup.java:3596android.view.ViewGroup.dispatchAttachedToWindow
ViewGroup.java:3596android.view.ViewGroup.dispatchAttachedToWindow
ViewGroup.java:3596android.view.ViewGroup.dispatchAttachedToWindow
ViewGroup.java:3596android.view.ViewGroup.dispatchAttachedToWindow
ViewGroup.java:3596android.view.ViewGroup.dispatchAttachedToWindow
ViewRootImpl.java:2262android.view.ViewRootImpl.performTraversals
ViewRootImpl.java:1927android.view.ViewRootImpl.doTraversal
ViewRootImpl.java:8558android.view.ViewRootImpl$TraversalRunnable.run
Choreographer.java:949android.view.Choreographer$CallbackRecord.run
Choreographer.java:761android.view.Choreographer.doCallbacks
Choreographer.java:696android.view.Choreographer.doFrame
Choreographer.java:935android.view.Choreographer$FrameDisplayEventReceiver.run
Handler.java:873android.os.Handler.handleCallback
Handler.java:99android.os.Handler.dispatchMessage
Looper.java:214android.os.Looper.loop
ActivityThread.java:7124android.app.ActivityThread.main
Method.java:-2java.lang.reflect.Method.invoke
RuntimeInit.java:494com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run
ZygoteInit.java:975com.android.internal.os.ZygoteInit.main
Ниже приведена моя программная логика. FragmentTabHost используется только в . HomeActivity
Его настройка выполняется полностью onCreate
и не затрагивается в других обратных вызовах жизненного цикла.
Из bugsnag я получаю следующую подсказку. Из хлебной крошки я вижу, что исключение возникает, когда пользователь нажимает home_key или recent_app сразу после запуска и на ранней стадии HomeActivity.
- Почему исключение зарегистрировано в SplashScreenActivity, разве это действие не должно завершаться задолго до HomeActivity?
- Я вижу, что TabHost пытается зафиксировать транзакцию фрагмента после
onSaveInstanceState()
, но любые методы, которые включают фиксацию фрагментов, выполняются вonCreate
, почему эти события фиксации запланированы послеonPause
?
Комментарии:
1. Привет, Гарри. «Параметры разработчика» -> «Не сохранять действия» -> ВКЛЮЧЕНО, помогает воспроизвести его?
2. @Elletlar спасибо, просто интересно, почему «Не сохранять действия» поможет воспроизвести мою проблему?
3. Возможно. Это приведет к постоянному повторению действий. Я заметил, что ошибка произошла во время onSaveInstanceState, что означает, что фреймворк планировал воссоздать действие. Для каждого действия с включенным этим параметром вы можете попробовать перейти на рабочий стол и вернуться к принудительному восстановлению активности. Приветствия.