如何在Android Webview中停止Javascript执行

时间:2014-07-30 17:47:34

标签: javascript android android-activity android-webview

场景:我有一个包含WebView的活动。每次我启动该活动时,都会在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();

2 个答案:

答案 0 :(得分:4)

您可以尝试暂时关闭Javascript,然后将其重新打开:

    webview.getSettings().setJavaScriptEnabled(false);
    webview.getSettings().setJavaScriptEnabled(true);

但是,如果您正在尝试清理WebView中的资源,则说明文档:

  

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

http://developer.android.com/reference/android/webkit/WebView.html#clearView%28%29

答案 1 :(得分:1)

Google在文档中说:https://developer.android.com/reference/android/webkit/WebView.html#clearView()

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

WebView.loadUrl("about:blank")