Android:有时/在某些设备上只有两个错误

标签 android crash

我刚刚将我的第一个应用程序发布到 Google Marketplace 并收到信息,应用程序崩溃了 - 我有两个堆栈跟踪,其中一个例如:

android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@45681318 is not valid; is your activity running?
   at android.view.ViewRoot.setView(ViewRoot.java:468)
   at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
   at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
   at android.view.Window$LocalWindowManager.addView(Window.java:424)
   at android.app.Dialog.show(Dialog.java:239)
   at abc.de.f.MyTask.onPreExecute(MyTask.java:52)

只有一种可能性可以访问 MyTask 中的 onPreExecute() 方法 - 它不会在模拟器或我的物理设备上崩溃。但它似乎有时会“在野外”崩溃。

要找到原因,您的第一步是什么?

非常感谢,

斯特凡

编辑:

@Override
protected void onPreExecute() {
  this.dialog.setMessage(((Activity) listener).getString(R.string.daten_werden_geladen));
  this.dialog.show();
}

this.dialog.setMessage 有效,但 show() 无效...:(

最佳答案

看起来您正在更新 UI 或使用已关闭 Activity 的上下文从 onPreExecute() 显示对话框。我猜你的任务执行中存在逻辑错误。在使用上下文更新 UI 之前,您应该检查 Activity 是否正在运行,或者您是否持有对 Activity View 的引用。

编辑: 不要使用 Activity 的上下文来获取字符串资源,而是尝试使用应用程序的上下文。

this.dialog.setMessage(((Activity) listener).getApplicationContext().getString(R.string.daten_werden_geladen));

关于Android:有时/在某些设备上只有两个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4367987/

相关文章:

ios - 仅在iPad上按 “Share”按钮后,iOS游戏崩溃

java - Eclipse:java.lang.RuntimeException:在注册表中找不到应用程序 “org.eclipse.ui.ide.workbench”

javascript - IE 8(仅)因 JavaScript/jQuery 调用插件而崩溃

java - Eclipse 找不到 .metadata/.log

android - 在 Android Kotlin 的 WebView 中加载网站 URL 之前先 Ping 网站 URL

crash - 获取 CGRect View

Powershell:有没有比 Stop-Process 更安全的退出程序的方法

java - ClassNotFoundException:无法运行应用程序

java - Android 设备上的 GCM 演示

android - 在 Android 中使用相机拍照时出现致命信号 11 和奇怪的错误消息