Intereting Posts
Как получить размер дисплея в дюймах на Android? Android.database.sqlite.SQLITeException: нет такой таблицы: admin при компиляции: INSERT INTO … и т. Д. Написать на stdout в JNI Android? Без <android / log.h> Текст уведомления NotificationCompat, который не отображается при обновлении уведомления Не удалось экспортировать приложение после обновления до Proguard 4.8 Ошибка «неверный параметр командной строки» при попытке сделать пример приветствия для Android Как работают InputStream, InputStreamReader и BufferedReader в Java? Создание полноэкранной анимации на Android? Должен ли я использовать OPENGL? Как скрыть строку заголовка Android после создания окна? Android, как проверить, работает ли служба намерений или перестала работать Удалить последний символ edittext Android – Как измерить качество полосы пропускания в локальной сети одним телефоном Как использовать «Отправить Feeback», FeedbackActivity, в Android? Изменить фон LinearLayout на Android Как программно добавить несколько LinearLayouts в одно представление, а затем добавить в ViewFlipper?

Android: EventHub.removeMessages (int what = 107) не поддерживается до того, как WebViewCore настроен

Я реализовал WebView в действии Dialog, и я загружаю простой url в webview.

Мои настройки веб-просмотра

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-файла из Asset в том же webview, что он отлично работает, но не может загрузить динамический url.

Я Google и найду несколько сообщений на http://code.google.com/p/android/issues/detail?id=21177

Мой журнал показывает мне

 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) 

Предложите мне изменения, которые я должен сделать.

Обновить

Я обнаружил, что если я передам какой-либо URL-адрес, например, «www.facebook.com», то он даст мне эту ошибку, но если я заменил его «https://www.facebook.com», тогда он будет работать отлично.

Проблема, которую я обнаружил, была связана с URL-адресом без http:// или https:// . Поэтому я добавил этот тег, если URL не содержит http:// или https:// .

В моем случае я исправил его, изменив порядок. Я положил loadUrl перед getSettings ()

Ниже приведен рабочий фрагмент,

 mWebView = (WebView) findViewById(R.id.web_view); // load file mWebView.loadUrl(SERVER_URL); mWebView.getSettings().setJavaScriptEnabled(true); 

Надеюсь, это кому-то поможет.

Я видел этот стек иногда в последние дни в моем LogCat, но до сих пор он не блокировал мой dev. Но я подозреваю, что это связано с тем, что мой WebView иногда пытается. Кажется, это ошибка, затрагивающая не только нас:


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, я проверю, вызывает ли что-то в моем коде какое-то представление, когда инициирует настройки.


ANSWER : Это исключение будет вызываться, если вы вызове requestWindowFeature(Window.FEATURE_NO_TITLE) а затем слишком долго подождите, чтобы вызвать setContentView() . Как долго вы можете ждать, я не мог понять. Итак, эти два будут первыми строками в onCreate() . Время покажет мне, если я прав.

Хорошей новостью является то, что это предупреждение, помеченное webcore является лишь предупреждением и само по себе не влияет на остальную часть приложения.

Плохая новость заключается в том, что кажется, что моя проблема не имеет к этому никакого отношения и происходит откуда-то другим.

Проблема, как правило, связана с URL-адресом, указывающим на то, что он не найден. Это 404 (т. Е. URL-адрес, который не найден). Изменить URL-адрес

У меня такая же проблема после того, как я вызвал 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();