安卓:EventHub.removeMessages(INT什么= 107)建立WebViewCor

2019-06-24 07:11发布

我在对话活动中实现的WebView和我加载简单的URL为网页流量。

我的网页视图设置如

wbView = (WebView) findViewById(R.id.wbView);
        wbView.setKeepScreenOn(true);
        wbView.getSettings().setJavaScriptEnabled(true);
        wbView.getSettings().setDomStorageEnabled(true);
        wbView.getSettings().setBuiltInZoomControls(true);
        wbView.setInitialScale(100);
        // wbView.getSettings().setUseWideViewPort(true);
        wbView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
        wbView.setWebViewClient(new MyWebViewClient());

和MyWebViewClient()包含

private class MyWebViewClient extends WebViewClient {
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            prgBar.setVisibility(View.GONE);
        }

        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler,
                SslError error) {
            Log.e("Error VAGARO", error.toString());
            prgBar.setVisibility(View.GONE);
            handler.proceed();
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return false;
        }
    }

我加载从资产两个HTML文件在同一网页视图其工作正常,但无法加载动态链接。

我谷歌和找到一些帖子http://code.google.com/p/android/issues/detail?id=21177

我logcat的表明了我

05-09 13:33:30.187: W/webcore(20054): java.lang.Throwable: EventHub.removeMessages(int what = 107) is not supported before the WebViewCore is set up.
05-09 13:33:30.187: W/webcore(20054):   at android.webkit.WebViewCore$EventHub.removeMessages(WebViewCore.java:1683)
05-09 13:33:30.187: W/webcore(20054):   at android.webkit.WebViewCore$EventHub.access$7900(WebViewCore.java:926)
05-09 13:33:30.187: W/webcore(20054):   at android.webkit.WebViewCore.removeMessages(WebViewCore.java:1795)
05-09 13:33:30.187: W/webcore(20054):   at android.webkit.WebView.sendOurVisibleRect(WebView.java:2917)
05-09 13:33:30.187: W/webcore(20054):   at android.webkit.ZoomManager.setZoomScale(ZoomManager.java:593)
05-09 13:33:30.187: W/webcore(20054):   at android.webkit.ZoomManager.access$1700(ZoomManager.java:49)
05-09 13:33:30.187: W/webcore(20054):   at android.webkit.ZoomManager$PostScale.run(ZoomManager.java:984)
05-09 13:33:30.187: W/webcore(20054):   at android.os.Handler.handleCallback(Handler.java:605)
05-09 13:33:30.187: W/webcore(20054):   at android.os.Handler.dispatchMessage(Handler.java:92)
05-09 13:33:30.187: W/webcore(20054):   at android.os.Looper.loop(Looper.java:137)
05-09 13:33:30.187: W/webcore(20054):   at android.app.ActivityThread.main(ActivityThread.java:4424)
05-09 13:33:30.187: W/webcore(20054):   at java.lang.reflect.Method.invokeNative(Native Method)
05-09 13:33:30.187: W/webcore(20054):   at java.lang.reflect.Method.invoke(Method.java:511)
05-09 13:33:30.187: W/webcore(20054):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-09 13:33:30.187: W/webcore(20054):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-09 13:33:30.187: W/webcore(20054):   at dalvik.system.NativeStart.main(Native Method)

推荐我,我应该做出改变。

更新

我发现,如果我会通过任何网址,如“www.facebook.com”,那么它给我这个错误,但如果我将与“https://www.facebook.com”,那么它的工作的罚款代替它。

Answer 1:

我发现这个问题是因为没有网址的http://https:// 。 所以我追加这个标签,如果网址不包含http://https://



Answer 2:

就我而言,我通过改变顺序固定它。 我把以前的getSettings 使用loadURL()

下面的工作片断,

mWebView = (WebView) findViewById(R.id.web_view);

// load file
mWebView.loadUrl(SERVER_URL);
mWebView.getSettings().setJavaScriptEnabled(true);

希望这可以帮助别人..



Answer 3:

我已经在我的logcat的最后几天看到这个堆栈的时候,但是到现在为止它不会阻止我的dev。 但我怀疑这是关系到我挣扎的WebView somtetimes一样。 这似乎是一个错误,不仅影响我们:

  • 安卓:removeMessages(INT什么= 107)不设置了WebViewCore之前当URL包含支持HTTP
  • 机器人EventHub.removeMessages(INT什么= 107)建立WebViewCore之前不支持
  • http://code.google.com/p/android/issues/detail?id=21305
  • http://code.google.com/p/android/issues/detail?id=21177

android.webkit.WebViewCore.removeMessages(INT):无效

1675        private synchronized void removeMessages(int what) {
1676            if (mBlockMessages) {
1677                return;
1678            }
1679            if (what == EventHub.WEBKIT_DRAW) {
1680                mDrawIsScheduled = false;
1681            }
1682            if (mMessages != null) {
1683                Throwable throwable = new Throwable(
1684                        "EventHub.removeMessages(int what = " + what + ") is not supported " +
1685                        "before the WebViewCore is set up.");
1686                Log.w(LOGTAG, Log.getStackTraceString(throwable));
1687            } else {
1688                mHandler.removeMessages(what);
1689            }
1690        }

队列mMessages必须是NULL,以避免异常。

// Message queue for containing messages before the WebCore thread is ready.

所以这是很简单的:事情是造成的WebCore需要更多的时间来建立。 根据这107`SET_SCROLL_OFFSET”和堆栈跟踪显示ZoomManger我将检查的东西在我的代码是导致视图以某种方式得到活跃,而启动的设置。


答 :如果你调用这将引发异常requestWindowFeature(Window.FEATURE_NO_TITLE)然后等待太长时间调用setContentView() 你可以等多久我无法弄清楚。 所以,这两个将在第一线onCreate()从现在开始。 时间会告诉我,如果我是对的。

好消息是,这种警告标签webcore仅仅是一个警告,本身会导致应用程序的其他部分没有任何影响。

坏消息是,它似乎是我的问题无关,与它和来自其他地方。



Answer 4:

这个问题一般涉及到URL所指向不被人发现。 这是一个404(未找到即URL)。 修改网址



Answer 5:

我有同样的问题我打电话后finish()然后重新启动相同的Activity 。 因此,也许它不能简单地以完成活动WebView 。 我做了以下之前完成的活动,它的工作原理。

try{
        webView.stopLoading();
        ViewGroup parent = (ViewGroup)webView.getParent();
        parent.removeView(webView);
        webView.destroy();
}catch(Exception e){
        Log.e(TAG, "clear webView fail");
        e.printStackTrace();
}
 finish();


文章来源: Android : EventHub.removeMessages(int what = 107) is not supported before the WebViewCore is set up