我刚刚将AdMob中的AdView添加到我的一项活动中。添加此视图后,活动将以一些明显的延迟开始。在LogCat中,我看到以下异常。它不会导致应用程序停止,但显示为警告:
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)
我也注意到这只在应用程序第一次运行时发生。当我关闭应用程序并重新开始时,它不会重复。但最初的运行对用户体验非常重要,所以我认为这仍然是一个重要的问题。有什么想法吗?
答案 0 :(得分:1)
几乎可以肯定,使用WebView(由AdView使用)创建内部数据库,只有在您的应用程序中第一次使用WebView时才会这样做。
以前在Gingerbread(Android 2.3)上特别引人注目。
为了缓解我在我的应用程序首次启动时以编程方式创建WebView,同时显示启动画面。确保在UI线程上创建它(使用处理程序等)。
类似(在Activity#onCreate中):
runOnUiThread(new Runnable() {
void run() {
new WebView(MyActivity.this);
}
});