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

Rya*_*heu 5 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)
Run Code Online (Sandbox Code Playgroud)

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

nic*_*Yes 3

仅在 Android 6.0.1 及更高版本的三星设备上存在同样的问题。能够重现它。

问题在于新的浮动操作模式(浮动工具栏)

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

解决方案是正确处理新的 ActionMode 并在关闭 Activity 之前关闭它。

  • @miecio 在你的 webview 中覆盖 startActionMode(Callback callback, int type) ,并保存对 super.startActionMode(...) 结果的弱引用,以便你可以在需要时在 onPause 中完成它。 (4认同)