如何在Android Webview中停止Javascript执行

Viv*_*vek 9 javascript android android-webview android-activity

场景:我有一个包含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();
Run Code Online (Sandbox Code Playgroud)

VER*_*T9x 5

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

    webview.getSettings().setJavaScriptEnabled(false);
    webview.getSettings().setJavaScriptEnabled(true);
Run Code Online (Sandbox Code Playgroud)

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

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

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