2012-05-09 22 views
15

Tôi đã triển khai WebView trong Hoạt động hộp thoại và tôi đang tải url đơn giản vào xem web.Android: EventHub.removeMessages (int what = 107) không được hỗ trợ trước khi WebViewCore được thiết lập

thiết lập Webview của tôi là như

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()); 

và MyWebViewClient() chứa

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; 
     } 
    } 

Tôi tải hai tập tin HTML từ tài sản trong cùng một webview làm việc tốt nhưng không thể tải url năng động của nó .

tôi Google và tìm thấy một số bài viết trên http://code.google.com/p/android/issues/detail?id=21177

logcat của tôi cho thấy tôi

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) 

Đề nghị cho tôi những sự thay đổi mà tôi nên làm.

Cập nhật

Tôi thấy rằng nếu tôi sẽ vượt qua bất kỳ url như "www.facebook.com", sau đó nó đem lại cho tôi lỗi này, nhưng nếu tôi sẽ thay thế nó bằng "https: // www.facebook.com "sau đó làm việc tốt.

+2

Bạn cũng sẽ thấy lỗi này nếu bạn cố gắng tải javascript: url vào trang không tồn tại. –

Trả lời

8

Vấn đề tôi tìm thấy là do url không có http:// hoặc https://. Vì vậy, tôi đã gắn thẻ này nếu url không chứa http:// hoặc https://.

+8

Điều gì về việc tải url địa phương, ví dụ: từ tài sản? file: // ... – user802421

+0

không chắc về nó .. –

+0

Tôi vừa gặp vấn đề tương tự trên Toshiba AT300 (Android 4.0.3) vì dấu gạch chéo trên URL: http://scratch.mit.edu/projects/editor/ –

1

Sự cố thường liên quan đến URL được trỏ tới không được tìm thấy. Đó là 404 (tức là một URL không được tìm thấy). Sửa đổi URL

5

Trong trường hợp của tôi, tôi đã sửa nó bằng cách thay đổi thứ tự. Tôi đặt loadUrl trước getSettings()

Working đoạn mã dưới đây,

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

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

Hy vọng điều này sẽ giúp người ..

3

Tôi đã nhìn thấy đống này đôi khi trong những ngày cuối cùng trong LogCat của tôi , nhưng cho đến bây giờ nó vẫn không ngăn cản được dev của tôi. Nhưng tôi nghi ngờ nó liên quan đến những khó khăn trong thời gian qua của WebView. Nó có vẻ là một lỗi ảnh hưởng đến không chỉ với chúng tôi:


android.webkit.WebViewCore.removeMessages(int):void

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  } 

Hàng đợi mMessages phải là NULL để tránh ngoại lệ.

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

Vì vậy, nó khá đơn giản: điều gì đó đang khiến cho WebCore cần nhiều thời gian hơn để thiết lập. Theo đó 107 là `SET_SCROLL_OFFSET 'và ngăn xếp dấu vết cho thấy ZoomManger tôi sẽ kiểm tra nếu một cái gì đó trong mã của tôi là gây ra quan điểm để có được hoạt động trong một số cách trong khi bắt đầu các thiết lập.


ĐÁP: ngoại lệ này sẽ được ném nếu bạn gọi requestWindowFeature(Window.FEATURE_NO_TITLE) và sau đó chờ đợi quá lâu để gọi setContentView(). Bao lâu bạn có thể chờ đợi tôi không thể tìm ra. Vì vậy, hai người đó sẽ là những dòng đầu tiên trong onCreate() từ bây giờ. Thời gian sẽ chỉ cho tôi nếu tôi đúng.

Tin vui là cảnh báo này được gắn thẻ webcore chỉ là cảnh báo và bản thân nó không ảnh hưởng đến phần còn lại của ứng dụng.

Tin xấu là có vẻ như vấn đề của tôi không liên quan gì đến nó và xuất phát từ một nơi khác.

0

Tôi có cùng sự cố sau khi tôi gọi finish() và khởi động lại cùng một số Activity. Do đó, có thể nó không thể kết thúc hoạt động với một số WebView. Tôi đã làm như sau trước khi kết thúc hoạt động và nó hoạt động.

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(); 
Các vấn đề liên quan