我使用的是Android WebView,它是根据计时器动态添加和删除的。我注意到由以下异常引起的一些崩溃。
java.util.concurrent.TimeoutException: android.webkit.WebViewClassic.finalize() timed out after 10 seconds
at android.os.MessageQueue.enqueueMessage(MessageQueue.java:318)
at android.os.Handler.enqueueMessage(Handler.java:626)
at android.os.Handler.sendMessageAtFrontOfQueue(Handler.java:618)
at android.webkit.WebViewCore$EventHub.sendMessageAtFrontOfQueue(WebViewCore.java:1873)
at android.webkit.WebViewCore$EventHub.access$7200(WebViewCore.java:1063)
at android.webkit.WebViewCore.destroy(WebViewCore.java:1987)
at android.webkit.WebViewClassic.destroyJava(WebViewClassic.java:2208)
at android.webkit.WebViewClassic.destroy(WebViewClassic.java:2183)
at android.webkit.WebViewClassic.finalize(WebViewClassic.java:4266)
at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:187)
at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:170)
at java.lang.Thread.run(Thread.java:841)
我找不到这个问题的根源。我尝试禁用硬件加速,但没有用。
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
我创建WebView的代码如下所示。
public static void setupWebView(WebView view, String url) {
view.loadUrl(url);
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null); // Did not fix TimeoutException
view.getSettings().setLoadWithOverviewMode(true);
view.getSettings().setUseWideViewPort(true);
view.getSettings().setJavaScriptEnabled(true);
view.getSettings().setDomStorageEnabled(true);
view.getSettings().setSaveFormData(false);
// Make the web view handle links on visited pages
view.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
}
我只是通过在父视图上调用parent.removeView(webView)
来删除视图。
任何可能导致我解决这个问题的想法?
系统在Android设备上运行> = 4.2.2。