【问题标题】:WebView getting destroyed on its ownWebView 自行销毁
【发布时间】:2016-06-02 09:28:48
【问题描述】:

我有一个片段 ViewPager,每个片段内部都有一个 WebView,在 XML 中定义。

我正在将资产中的 HTML 文件读入字符串(我必须替换某些内容),然后将字符串加载到 WebWiew 中。 它工作正常,WebView 显示正确的内容。

这是我的代码:

webWiew.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageFinished(WebView view, String url) {
                    super.onPageFinished(view, url);
                    // show webview when page has fully loaded
                    view.setVisibility(View.VISIBLE);
                }
            });


webWidget.getSettings().setJavaScriptEnabled(true);
String html = Helper.getHtmlAsString(getContext());
if (html != null) {
     html = html.replace(PLACEHOLDER, String.valueOf(pageId));
     webWidget.loadDataWithBaseURL(HTML_WIDGET_PATH, html, "text/html", "utf-8", null);
}

但是在页面之间滚动时,出现以下错误(注意WebView仍然显示内容):

D/webviewglue: nativeDestroy view: 0x1d8b9d0
D/webview: webview.destroy() is called.
D/webview: java.lang.Throwable: webview.destroy() callstack
                                at android.webkit.WebView.destroy(WebView.java:2449)
                                at android.webkit.WebView$10.run(WebView.java:5335)
                                at android.os.Handler.handleCallback(Handler.java:605)
                                at android.os.Handler.dispatchMessage(Handler.java:92)
                                at android.os.Looper.loop(Looper.java:137)
                                at android.app.ActivityThread.main(ActivityThread.java:4507)
                                at java.lang.reflect.Method.invokeNative(Native Method)
                                at java.lang.reflect.Method.invoke(Method.java:511)
                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:978)
                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
                                at dalvik.system.NativeStart.main(Native Method)

我不会在任何地方破坏 WebView,我肯定不会打电话给webview.destroy()

有什么建议可以避免这个错误吗?

【问题讨论】:

  • 您正在使用片段查看器,也许片段正在被销毁?
  • 是的,可能是这样,但是系统不应该在浏览网页后负责清理吗?

标签: android android-fragments webview


【解决方案1】:

尝试将此代码放入片段的 onDestroy() 方法中

protected void onDestroy()
{
yourwebViewPlaceholder.removeView(yourWebView);
yourWebView.removeAllViews();
yourWebView.destroy();
}

让我知道这是否适合您! :)

【讨论】:

  • 尝试从 onDestroy 中的片段中删除所有视图
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-12
  • 1970-01-01
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
  • 2023-02-08
相关资源
最近更新 更多