文章标题

来源:互联网 发布:最诡异的事情 知乎 编辑:程序博客网 时间:2024/06/07 23:28

Android webview无法弹出select选择框

原因是载体没选好(要弹Dialog需要一个Activity作为载体),在创建这个webview的时候所传的context需要是Activity的,不能是Application的Context , 否则就会出现要显示的h5页面里面的select标签失效(小米3)的情况(甚至崩溃(锤子)) .

且会报android.view.WindowManager$BadTokenException

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an applicationat android.view.ViewRootImpl.setView(ViewRootImpl.java:759)at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:336)at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:86)at android.app.Dialog.show(Dialog.java:298)at com.android.org.chromium.content.browser.input.SelectPopupDialog.show(SelectPopupDialog.java:133)at com.android.org.chromium.content.browser.ContentViewCore.showSelectPopup(ContentViewCore.java:2341)at com.android.org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)at com.android.org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:53)at android.os.Handler.dispatchMessage(Handler.java:102)at android.os.Looper.loop(Looper.java:135)at android.app.ActivityThread.main(ActivityThread.java:5371)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:1117)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)

至于泄露的问题

    public void clearWebViewResource() {        if (mWebView != null) {            mWebView.removeAllViews();            // in android 5.1(sdk:21) we should invoke this to avoid memory leak            // see (https://coolpers.github.io/webview/memory/leak/2015/07/16/            // android-5.1-webview-memory-leak.html)            ((ViewGroup) mWebView.getParent()).removeView(mWebView);            mWebView.setTag(null);            mWebView.clearHistory();            mWebView.destroy();            mWebView = null;        }    }
原创粉丝点击