如何避免Javascript导致Android WebView无响应?

问题描述 投票:0回答:1

我最近遇到了一个问题,即在 WebView 中打开 Web 应用程序并开始执行,简而言之,一个永无休止的 Javascript 渲染循环。在循环进行时退出 WebView 并调用

destroy()
似乎不会终止 Javascript 调用,导致任何 WebView 实例随后无法加载任何内容。

我相信发生这种情况是因为只有一个渲染器进程并且 Javascript 在单个线程上运行。 Android 端有什么办法可以防御这种情况吗?在混合应用程序中,让 Web 开发人员无意中破坏整个本机体验似乎不太理想。

我期望关闭 WebView 来有效停止任何挂起的 Javascript 执行,但它继续运行并使整个渲染器进程无响应。

android android-webview chromium
1个回答
0
投票

下面给出无限循环脚本

webView.evaluateJavascript(
    """
        while (true) {}
    """.trimIndent(),
    null
)

我可以通过调用 WebViewRenderProcess.terminate

来终止渲染进程
webView.webViewRenderProcess.terminate()

请注意,必须首先按照应用程序内所有 WebView(包括广告 SDK)的

文档
的描述正确处理 WebViewClient.onRenderProcessGone。否则,应用程序将崩溃。

© www.soinside.com 2019 - 2024. All rights reserved.