Android 6.0.1和#34;致命异常问题:android.view.WindowManager $ BadTokenException"

时间:2016-06-28 22:51:37

标签: android android-6.0.1-marshmallow

我在崩溃日志记录中看到此错误仅来自Android 6.0.1设备,但不是特定于设备。

Fatal Exception: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
       at android.view.ViewRootImpl.setView(ViewRootImpl.java:849)
       at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:337)
       at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
       at android.widget.PopupWindow.invokePopup(PopupWindow.java:1329)
       at android.widget.PopupWindow.showAtLocation(PopupWindow.java:1077)
       at android.widget.PopupWindow.showAtLocation(PopupWindow.java:1035)
       at com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup.show(FloatingToolbar.java:563)
       at com.android.internal.widget.FloatingToolbar.show(FloatingToolbar.java:214)
       at com.android.internal.view.FloatingActionMode$FloatingToolbarVisibilityHelper.updateToolbarVisibility(FloatingActionMode.java:411)
       at com.android.internal.view.FloatingActionMode$1.run(FloatingActionMode.java:65)
       at android.os.Handler.handleCallback(Handler.java:739)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:158)
       at android.app.ActivityThread.main(ActivityThread.java:7229)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

有谁知道这个问题的原因/解决方案?它似乎很少发生。

2 个答案:

答案 0 :(得分:2)

仅在安装了Android 6.0.1及更高版本的Samsung设备上遇到同样的问题。能够重现它。

问题在于new floating action mode (floating toolbar)

当用户在屏幕上选择一些文本(浮动工具栏出现),转到上一个活动(关闭当前活动)然后,据我所知,android OS正在尝试重新创建它(因为它没有被正确关闭)使用已被破坏的活动对象。

解决方案是正确处理新的ActionMode并在关闭活动之前将其关闭。

答案 1 :(得分:0)

从onPause和on活动中调用webview.onPause 似乎来自onResume活动的webview.onResume() 解决了这个问题。