我正在开发一款涉及多个活动和服务的Android应用程序。其中一些活动是在第三方库中定义的,我正在将其导入到我的项目中。问题在于,在某些设备上(特别是三星Galaxy Tabs),当通过点击返回按钮从一个活动切换到前一个活动时,我的应用程序会崩溃。
我查看了LogCat,并发现这是崩溃的原因:
android.view.WindowManager$BadTokenException: Unable to add window -- token
android.os.BinderProxy@351c808e is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:562)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:272)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3017)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
但有趣的是,我的应用程序类在堆栈跟踪中都没有出现。 我在StackOverflow上搜索了类似的问题,但我找到的每个其他报告中,在BadTokenException的堆栈跟踪中,相应的应用程序代码总是出现在堆栈跟踪中。
有人知道这个问题的常见原因和/或最佳解决方法吗? 我注意到这个问题在三星设备上更容易发生,所以可能是这些设备上的实际错误。
setText()
时,就会抛出BadTokenException
异常。大多数情况下,这会导致静默失败,但在某些设备上,它会导致UI线程抛出异常并崩溃应用程序。 - user4118620setText
时,在这种情况下它根本没有效果,但不会崩溃 :( - kiruwka