Android 6.0.1上的问题“致命异常:android.view.WindowManager $BadTokenException”

我在崩溃日志记录中看到此错误仅来自
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)

有谁知道这个问题的原因/解决方案?它似乎相对不频繁发生.

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

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

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

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

点赞