错误:BinderProxy @ 45d459c0无效; 你的活动在运行吗?

VIS*_*AGA 135 android

这是什么错误...我还没有在stackoverflow社区中找到关于此错误的任何讨论详解: -

10-18 23:53:11.613: ERROR/AndroidRuntime(3197): Uncaught handler: thread main exiting due to uncaught exception
10-18 23:53:11.658: ERROR/AndroidRuntime(3197): android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@45d459c0 is not valid; is your activity running?
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.view.ViewRoot.setView(ViewRoot.java:468)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.app.Dialog.show(Dialog.java:239)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at com.vishal.contacte.Locationlistener$MyLocationListener.onLocationChanged(Locationlistener.java:86)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:179)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:112)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:128)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.os.Looper.loop(Looper.java:123)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.app.ActivityThread.main(ActivityThread.java:4363)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at java.lang.reflect.Method.invokeNative(Native Method)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at java.lang.reflect.Method.invoke(Method.java:521)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

Dis*_*Dev 320

这很有可能发生,因为您正在尝试在执行后台线程后显示一个对话框,而Activity正在被销毁.

当我试图显示对话时,当调用对话框的活动由于某种原因而完成时,我看到我的一些应用程序偶尔会报告此错误.这是为我解决的问题:

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

我已经使用它来解决旧版本Android上的问题已经好几年了,并且从那时起就没有看到崩溃.

  • 太感谢了!对我来说,在对话框显示之前按下后退按钮时会发生崩溃(上面有错误信息).因此代码将继续并尝试显示它,即使我处于不同的活动中.但这阻止了崩溃,我轻松地进入了新的活动! (7认同)
  • 这实际上可以解决问题!但是,即使发生这种情况,有没有办法打开对话框?发生这种情况时,我不确定如何管理对话框。有什么建议?提前致谢! (2认同)

小智 10

我遇到了同样的问题,并使用上面DiscDev提出的代码进行了如下的微小更改:

if (!MainActivity.this.isFinishing()){
    alertDialog.show();
}
Run Code Online (Sandbox Code Playgroud)


小智 6

如果对话框因为线程而出现这个问题,你应该像这样在 UI 线程上运行它:-

runOnUiThread(new Runnable() {
            @Override
            public void run() {
                dialog.show();

            }
        });
Run Code Online (Sandbox Code Playgroud)


akh*_*707 5

当您显示不再存在的上下文的对话框时,会发生此错误。

在调用之前.show()检查活动/上下文是否未完成

if (!(context instanceof Activity && ((Activity) context).isFinishing())) {
    alert.show();
}
Run Code Online (Sandbox Code Playgroud)