HarmonyOS 鸿蒙Next 如何定位Web组件首次加载网页时滑动卡顿问题

发布于 1周前 作者 htzhanglong 最后一次编辑是 5天前 来自 鸿蒙OS

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组件首次加载网页时滑动卡顿问题,可以从以下几个方面进行定位:

  1. 网络状态:检查网络连接是否稳定,不稳定的网络会直接影响页面加载速度,从而导致滑动卡顿。
  2. 性能优化:考虑Web组件的性能优化,如使用预加载、预连接等技术减少页面加载时间。同时,检查网页代码是否复杂或包含大量资源,这可能导致加载缓慢和滑动卡顿。
  3. 权限设置:确保Web组件具有必要的权限,如网络访问权限等,以加载相关资源。
  4. 工具分析:使用DevEco Studio中的AppAnalyzer工具检测应用性能,特别是关注丢帧问题。通过Frame Profiler等工具录制Trace,查看应用的平均帧率、丢帧率以及丢帧发生的位置,从而定位问题。
  5. 资源消耗:分析CPU和GPU的调用情况,判断是否存在资源消耗过大导致的卡顿。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部