令牌android.os.BinderProxy@e4f4f2b无效; 你的活动在运行吗?

mic*_*ith 5 android launch android-studio

我在应用程序启动时独家崩溃,仅在模拟器和调试中

模拟器和运行:好的

设备和运行:好的

设备和调试:好的

模拟器和调试:CRASH!

看起来Android正试图在发布时做一个Toast,因为我没有很多Toast并且在所有这些上添加了断点,我可以排除它是我的一个.

有没有办法找出Android试图显示的消息以及它所指的Activity?在崩溃发生之前,Logcat没有显示任何异常.

android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@e4f4f2b is not valid; is your activity running?
        at android.view.ViewRootImpl.setView(ViewRootImpl.java:679)
        at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:342)
        at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
        at android.widget.Toast$TN.handleShow(Toast.java:459)
        at android.widget.Toast$TN$2.handleMessage(Toast.java:342)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6119)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Run Code Online (Sandbox Code Playgroud)

aan*_*shu 3

这种情况很可能发生,因为您试图在后台线程执行后显示一个对话框,而活动正在被销毁。

这对我有用:

if(!((Activity) context).isFinishing())
{
    //show dialog
}
Run Code Online (Sandbox Code Playgroud)

它对我来说非常有效,多年来我一直在使用这种做法。