HarmonyOS 鸿蒙Next 如何定位Web组件首次加载网页时滑动卡顿问题
HarmonyOS 鸿蒙Next 如何定位Web组件首次加载网页时滑动卡顿问题
【问题现象】
Web组件首次加载网页时,在开始加载网页的时候用手指滑动网页会发生明显的卡顿。
问题代码如下:
Web({
controller: this.webController,
src: this.url
// src: $rawfile('news.html')
}).darkMode(WebDarkMode.Auto)
.javaScriptProxy(
{
object: this.newsNormalController,
name: "JSBridgeHandle",
methodList: ["sendNewsDataToPage", "images", "openPath", "toCareDzh", "openHomePage",
"deleteComment", "popSecondComments", "zanComment", "contextDetail"],
controller: this.webController
}
)
.onPageBegin(() => {
this.webController.setCustomUserAgent("Mozilla/5.0 (Phone; Android; OpenHarmony 4.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 ArkWeb/4.1.6.1 Mobile")
})
【背景知识】
setCustomUserAgent()接口用于设置自定义用户代理,会覆盖系统的用户代理。
【定位思路】
分析代码发现,在onPageBegin回调中,做了一个设置自定义用户代理的操作,会导致页面重新加载,这样相当于页面加载了两次,此时滑动页面就可能发生“卡顿”现象。
【解决方案】
将设置用户自定义代码的代码放到onControllerAttached中。
代码示例如下:
.onControllerAttached(()=>{
this.webController.setCustomUserAgent("Mozilla/5.0 (Phone; Android; OpenHarmony 4.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 ArkWeb/4.1.6.1 Mobile")
})
1 回复
针对HarmonyOS 鸿蒙Next Web组件首次加载网页时滑动卡顿问题,可以从以下几个方面进行定位:
- 网络状态:检查网络连接是否稳定,不稳定的网络会直接影响页面加载速度,从而导致滑动卡顿。
- 性能优化:考虑Web组件的性能优化,如使用预加载、预连接等技术减少页面加载时间。同时,检查网页代码是否复杂或包含大量资源,这可能导致加载缓慢和滑动卡顿。
- 权限设置:确保Web组件具有必要的权限,如网络访问权限等,以加载相关资源。
- 工具分析:使用DevEco Studio中的AppAnalyzer工具检测应用性能,特别是关注丢帧问题。通过Frame Profiler等工具录制Trace,查看应用的平均帧率、丢帧率以及丢帧发生的位置,从而定位问题。
- 资源消耗:分析CPU和GPU的调用情况,判断是否存在资源消耗过大导致的卡顿。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。