2014-02-11 35 views
0

我刚刚从AdMob中添加了一个AdView到我的一个活动中。在添加这个视图后,活动开始时有一些明显的滞后。在LogCat中,我看到以下异常。它不会导致应用程序停止,但显示为警告:介绍AdMob后的WebView/webcore错误

W/webcore(12969): java.lang.Throwable: EventHub.removeMessages(int what = 107) is not supported before the WebViewCore is set up. 
W/webcore(12969): at android.webkit.WebViewCore$EventHub.removeMessages(WebViewCore.java:2207) 
W/webcore(12969): at android.webkit.WebViewCore$EventHub.access$10000(WebViewCore.java:1167) 
W/webcore(12969): at android.webkit.WebViewCore.removeMessages(WebViewCore.java:2454) 
W/webcore(12969): at android.webkit.WebView.sendOurVisibleRect(WebView.java:3383) 
W/webcore(12969): at android.webkit.ZoomManager.setZoomScale(ZoomManager.java:776) 
W/webcore(12969): at android.webkit.ZoomManager.access$1900(ZoomManager.java:60) 
W/webcore(12969): at android.webkit.ZoomManager$PostScale.run(ZoomManager.java:1372) 
W/webcore(12969): at android.os.Handler.handleCallback(Handler.java:608) 
W/webcore(12969): at android.os.Handler.dispatchMessage(Handler.java:92) 
W/webcore(12969): at android.os.Looper.loop(Looper.java:156) 
W/webcore(12969): at android.app.ActivityThread.main(ActivityThread.java:5109) 
W/webcore(12969): at java.lang.reflect.Method.invokeNative(Native Method) 
W/webcore(12969): at java.lang.reflect.Method.invoke(Method.java:511) 
W/webcore(12969): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:991) 
W/webcore(12969): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:758) 
W/webcore(12969): at dalvik.system.NativeStart.main(Native Method) 
W/webcore(12969): java.lang.Throwable: EventHub.removeMessages(int what = 105) is not supported before the WebViewCore is set up. 
W/webcore(12969): at android.webkit.WebViewCore$EventHub.removeMessages(WebViewCore.java:2207) 
W/webcore(12969): at android.webkit.WebViewCore$EventHub.access$10000(WebViewCore.java:1167) 
W/webcore(12969): at android.webkit.WebViewCore.removeMessages(WebViewCore.java:2454) 
W/webcore(12969): at android.webkit.WebView.sendViewSizeZoom(WebView.java:3619) 
W/webcore(12969): at android.webkit.ZoomManager.setZoomScale(ZoomManager.java:782) 
W/webcore(12969): at android.webkit.ZoomManager.access$1900(ZoomManager.java:60) 
W/webcore(12969): at android.webkit.ZoomManager$PostScale.run(ZoomManager.java:1372) 
W/webcore(12969): at android.os.Handler.handleCallback(Handler.java:608) 
W/webcore(12969): at android.os.Handler.dispatchMessage(Handler.java:92) 
W/webcore(12969): at android.os.Looper.loop(Looper.java:156) 
W/webcore(12969): at android.app.ActivityThread.main(ActivityThread.java:5109) 
W/webcore(12969): at java.lang.reflect.Method.invokeNative(Native Method) 
W/webcore(12969): at java.lang.reflect.Method.invoke(Method.java:511) 
W/webcore(12969): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:991) 
W/webcore(12969): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:758) 
W/webcore(12969): at dalvik.system.NativeStart.main(Native Method) 

我还注意到,这只发生在应用程序第一次运行。当我关闭应用程序并重新开始时,它不会重复。但最初的运行对于用户体验非常重要,所以我认为这仍然是一个重要问题。有任何想法吗?

回答

1

这几乎可以肯定地处理WebView(由AdView使用)创建它的内部数据库,它只会在您的应用程序中首次使用WebView。

它曾经在姜饼(Android 2.3)上特别引人注目。

为了缓解我会以编程方式创建一个WebView时,我的应用程序第一次启动时显示一个启动画面。确保你在UI线程上创建它(使用处理程序等)。

喜欢的东西(在活动#的onCreate):

runOnUiThread(new Runnable() { 
    void run() { 
    new WebView(MyActivity.this); 
    } 
}); 
+1

请解释更多这 – Rohit

+0

在您的主要活动的onCeate,程式设计创建使用Handler上的WebView(所以它是异步,但仍然在UI线)。这将导致全局WebView数据库初始化初始化,以便诸如在AdView内的WebView的后期使用不会长时间阻塞。 – William

+0

你能否提供我的代码,它非常扰乱我,它也影响手机的处理 – Rohit