Я просмотрел 100 сообщений о BadTokenException, но кажется, что каждый раз появляется другая причина, по которой это происходит, в моем случае я иногда вижу эту трассировку стека (не всегда происходит / не знаю, как воспроизвести):
Caused by android.view.WindowManager$BadTokenException: Unable to add window – token android.os.BinderProxy@2a5a564 is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:602)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:322)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:98)
at android.app.Dialog.show(Dialog.java:319)
at android.support.v4.app.DialogFragment.onStart(SourceFile:434)
at com.mycompany.myapp.ui.about.WhatsNewDialog.onStart(SourceFile:89)
at android.support.v4.app.Fragment.performStart(SourceFile:2372)
at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1467)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(SourceFile:1759)
at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1827)
at android.support.v4.app.BackStackRecord.executeOps(SourceFile:797)
at android.support.v4.app.FragmentManagerImpl.executeOps(SourceFile:2596)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(SourceFile:2383)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(SourceFile:2338)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(SourceFile:2245)
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(SourceFile:3248)
at android.support.v4.app.FragmentManagerImpl.dispatchResume(SourceFile:3212)
at android.support.v4.app.FragmentController.dispatchResume(SourceFile:217)
at android.support.v4.app.FragmentActivity.onResumeFragments(SourceFile:509)
at android.support.v4.app.FragmentActivity.onPostResume(SourceFile:498)
at android.support.v7.app.AppCompatActivity.onPostResume(SourceFile:171)
at android.app.Activity.performResume(Activity.java:6415)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3146)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3268)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520)
at android.app.ActivityThread.access$900(ActivityThread.java:179)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1380)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5560)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
Как я понимаю, трассировка исключение происходит непосредственно в onStart DialogFragment, это единственная строка кода самого приложения, которая отображается, в этой строке только super.onStart ()называется, больше ничего не присутствует в этом методе, так что это действительно сбивает с толку, вы понимаете это?Будет ли в этом случае также решение с использованием «activity.isFinishing ()»?В трассировке стека я даже не вижу строки, где я вызываю новый WhatsNewDialog (). Show (), так что это может действительно произойти при возобновлении диалога, любые советы приветствуются.