Jetpack compose webview 无法随机显示页面

时间:2021-02-16 14:18:59

标签: android html webview android-jetpack-compose

我在 Android 应用中有一个 WebView。有时,webview 中的页面不显示。这是随机发生的:对于同一页面,它有时会出现,有时不会。尽管页面没有显示,但空白区域占据了适当的空间(我知道是因为在 webview 下方还有其他控件)。奇怪的是,如果我使用 chrome://inspect 检查 webview,页面就在那里并且正确显示。

当问题发生时,如果我通过 DevTools 在 html 中执行小的更改,同样的效果仍然存在:新页面出现在 DevTools 视图中,但在设备中,显示一个空白区域,该区域应该是被新页面占用。该页面仅在我更改 html/css 中的某些内容使其大小调整很多时才显示。

该应用使用 Jetpack Compose 并通过 WebView 使用 AndroidView。出现问题时,logcat中有时会出现以下回溯:

2021-02-16 16:08:34.866 9683-9698/... E/System: Uncaught exception thrown by finalizer
2021-02-16 16:08:34.909 9683-9698/... E/System: java.lang.IllegalStateException: Warning: Router objects should be explicitly closed when no longer required otherwise you may leak handles.
        at w4.finalize(chromium-TrichromeWebViewGoogle.aab-stable-432415233:4)
        at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:289)
        at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:276)
        at java.lang.Daemons$Daemon.run(Daemons.java:137)
        at java.lang.Thread.run(Thread.java:919)
     Caused by: java.lang.Exception: AutocloseableRouter allocated at:
        at w4.<init>(chromium-TrichromeWebViewGoogle.aab-stable-432415233:4)
        at vu.<init>(chromium-TrichromeWebViewGoogle.aab-stable-432415233:8)
        at org.chromium.content.browser.framehost.RenderFrameHostImpl.<init>(chromium-TrichromeWebViewGoogle.aab-stable-432415233:10)
        at org.chromium.content.browser.framehost.RenderFrameHostImpl.create(chromium-TrichromeWebViewGoogle.aab-stable-432415233:1)
        at J.N.MZAK3_Tx(Native Method)
        at org.chromium.content.browser.webcontents.WebContentsImpl.E0(chromium-TrichromeWebViewGoogle.aab-stable-432415233:3)
        at qP.renderFrameDeleted(chromium-TrichromeWebViewGoogle.aab-stable-432415233:2)
        at org.chromium.content.browser.webcontents.WebContentsObserverProxy.renderFrameDeleted(chromium-TrichromeWebViewGoogle.aab-stable-432415233:2)
        at J.N.MQGusfGb(Native Method)
        at v5.run(chromium-TrichromeWebViewGoogle.aab-stable-432415233:2)
        at ze.handleMessage(chromium-TrichromeWebViewGoogle.aab-stable-432415233:21)
        at Be.a(chromium-TrichromeWebViewGoogle.aab-stable-432415233:3)
        at Be.<init>(chromium-TrichromeWebViewGoogle.aab-stable-432415233:3)
        at org.chromium.android_webview.AwContents.M(chromium-TrichromeWebViewGoogle.aab-stable-432415233:88)
        at org.chromium.android_webview.AwContents.L(chromium-TrichromeWebViewGoogle.aab-stable-432415233:2)
        at org.chromium.android_webview.AwContents.<init>(chromium-TrichromeWebViewGoogle.aab-stable-432415233:67)
        at L60.run(chromium-TrichromeWebViewGoogle.aab-stable-432415233:9)
        at L80.b(chromium-TrichromeWebViewGoogle.aab-stable-432415233:3)
        at J80.run(chromium-TrichromeWebViewGoogle.aab-stable-432415233:1)
        at org.chromium.base.task.PostTask.c(chromium-TrichromeWebViewGoogle.aab-stable-432415233:3)
        at L80.a(chromium-TrichromeWebViewGoogle.aab-stable-432415233:3)
        at com.android.webview.chromium.WebViewChromium.init(chromium-TrichromeWebViewGoogle.aab-stable-432415233:77)
        at android.webkit.WebView.<init>(WebView.java:429)
        at android.webkit.WebView.<init>(WebView.java:353)
        at android.webkit.WebView.<init>(WebView.java:336)
        at android.webkit.WebView.<init>(WebView.java:323)
        at android.webkit.WebView.<init>(WebView.java:313)
        (my invocation)

我使用 WebView 如下:

@Composable
fun WebViewView(
    html: String,
    baseUrl: String? = null
) {
    AndroidView({ context ->

        val webView = WebView(context)

        // configure webview

        webview
    })
}

这可能是什么原因?

0 个答案:

没有答案