如何在Android Webview中停止Javascript执行

如何在Android Webview中停止Javascript执行,javascript,android,android-activity,android-webview,Javascript,Android,Android Activity,Android Webview,场景:我有一个包含网络视图的活动。每次启动该活动时,都会在WebView中呈现一些HTML内容。我还在WebView中注入Javascript,它有一些代码,包括DomContentLoaded事件监听器 问题:问题是有时候Javascript在WebView中执行会花费很多时间。这是随机发生的,不是每次都是。大多数情况下,它的加载速度非常快。但有时对于同一内容,执行时间超过20秒。现在处于这种状态,如果我从活动返回并再次启动它,Javascript将不会加载到WebView中,因为之前的JS执

场景:我有一个包含网络视图的活动。每次启动该活动时,都会在WebView中呈现一些HTML内容。我还在WebView中注入Javascript,它有一些代码,包括DomContentLoaded事件监听器

问题:问题是有时候Javascript在WebView中执行会花费很多时间。这是随机发生的,不是每次都是。大多数情况下,它的加载速度非常快。但有时对于同一内容,执行时间超过20秒。现在处于这种状态,如果我从活动返回并再次启动它,Javascript将不会加载到WebView中,因为之前的JS执行尚未完成。为了让WebView正常工作,我必须关闭应用程序并重新启动它。如何在不关闭应用程序的情况下从该状态恢复?我试图用下面的代码阻止它,但没有一个成功。还有其他建议吗

webView.stopLoading();
webView.loadData("", "text/html", null);
webView.freeMemory();
webView.removeAllViews();
webView.destroy();

您可以尝试暂时关闭Javascript,然后像这样重新打开:

    webview.getSettings().setJavaScriptEnabled(false);
    webview.getSettings().setJavaScriptEnabled(true);
但是,如果您试图清理Web视图中的资源,文档会说明:

使用WebView.loadUrl(“about:blank”)可靠地重置视图状态并释放页面资源(包括任何正在运行的JavaScript)

谷歌在文档中说:

使用WebView.loadUrl(“about:blank”)可靠地重置视图状态并释放页面资源(包括任何正在运行的JavaScript)


您是否尝试过仅从布局中删除webView,然后创建一个新的webView?您找到了解决方案吗?我有同样的问题…我也有同样的问题。这里似乎有一些关于这一点的帖子,但没有一篇提供答案。虽然这段代码可能会回答这个问题,但提供关于这段代码为什么和/或如何回答这个问题的附加上下文可以提高其长期价值。
WebView.loadUrl("about:blank")