KevinnZou / compose-webview-multiplatform

WebView for JetBrains Compose Multiplatform
https://kevinnzou.github.io/compose-webview-multiplatform/
Apache License 2.0
318 stars 40 forks source link

这个跳转网页的时候会卡半天,这是个大问题啊 #20

Closed lov3blacksilk closed 7 months ago

KevinnZou commented 7 months ago

我这边自己测试跳转网页并没有出现卡顿的情况,是网络问题或者网页自身问题导致的吗?

lov3blacksilk commented 7 months ago

又调试了下,Webview(state)也没有很耗时,不知道什么原因导致的

跳转到BasicWebViewSample()页面的时候感觉时间很长才能看到页面 我自测使用自定义SearchBar的时候感觉也很慢,就是感觉过了1秒才能看到搜索框,而且搜索框和webview是同时出现的,正常情况下不应该先出现搜索框,然后webview再慢慢加载吗

KevinnZou commented 7 months ago

你是在哪个平台测试的?有没有可能和Compose框架有关系?

lov3blacksilk commented 7 months ago

android平台,你邮件多少 我给你看看效果

KevinnZou commented 7 months ago

zoumingjie17@163.com,要是有复现代码就更好了,理论上Android端不会出性能问题。

lov3blacksilk commented 7 months ago

邮件发给你了,加载一些时间长的网站就更明显了,可能要好几秒才显示, 如果没有webview的话就是秒显,所以感觉跟这个webview的逻辑有关

KevinnZou commented 7 months ago

你的视频里应用是冷启动的吗?因为搜索框和webview是一起出现的,所以证明webview加载速度是没有问题的,不然应该搜索框先展示,webview部分白屏。还有一个可以验证的方法是你启动后在点个链接内部跳转,看下加载速度,我这里是没有问题的。我感觉你视频里的启动慢和应用启动有关系?因为webview内核初始化是需要时间的,这会拖慢应用启动速度。你可以直接用原生的WebView测试一下,看下是不是一样会拖慢启动时间。

lov3blacksilk commented 7 months ago

应该不是冷启动导致的吧,多试几次也是一样的效果 我换了自定义webview也是一样的,搜索框和webview一起出现

找到了一个规避的方法

AndroidView(
            factory = {
                FrameLayout(it)
            },
            update = {
                it.removeAllViews()
                it.addView(
                    WebView(it.context).apply {
                        loadUrl(url)
                    }
                )
            }
        )

这种写法就是先出现搜索框,然后webview慢慢加载显示了

KevinnZou commented 7 months ago

不是,一起出现是没有问题的,你如果换了自定义的webview还是一样的效果,这就说明加载速度慢不是我的库带入的,我这个库最终也是用的原生Webview。这样的话就大概率是因为Webview内核初始化导致首次加载速度偏慢,这个是没法避免的。除非你提前预热之类的,这个网上有相关的文章介绍,不过这个就需要自己在主工程中处理,不在我的库负责的范围内了。