鸿蒙(HarmonyOS)性能优化实战-页面布局检查器ArkUI Inspector

DevEco Studio内置ArkUI Inspector工具,开发者可以使用ArkUI Inspector,在DevEco Studio上查看应用在真机上的UI显示效果。利用ArkUI Inspector工具,开发者可以快速定位布局问题或其他UI相关问题,同时也可以观察和了解不同组件之间的布局关系和属性,学习如何通过布局属性来控制组件的显示方式。

使用约束

已通过USB连接设备并在设备上打开需要调试的设备。

仅在应用为debug编译模式时使用。

仅支持OpenHarmony API 9及以上版本的Stage工程。

场景示例

示例代码使用Grid组件来实现网格布局,在子组件Text组件的外层嵌套了3层Stack容器。

ts 复制代码
@Entry
@Component
struct ArkUIInspectorExample {
 @State children: Number[] = Array.from(Array(900), (_, k) => k);

 build() {
  Scroll() {
   Grid() {
    ForEach(this.children, (item: Number) => {
     GridItem() {
      Stack() {
       Stack() {
        Stack() {
         Text(item.toString()).border({ width: 2, color: Color.Green })
        }
       }
      }
     }
    }, (item: Number) => item.toString())
   }
   .columnsTemplate('1fr 1fr 1fr 1fr')
   .columnsGap(0)
   .rowsGap(0)
   .size({ width: "100%", height: "100%" })
  }
 }
}

如何使用页面布局检查器

以DevEco Studio 4.0.0.400版本为例,在DevEco Studio菜单栏上单击****View**** > *Tool Windows* >*ArkUI Inspector* ,或者在DevEco Studio底部工具栏单击

打开ArkUI Inspector工具,如下图所示:

  1. 进程选择栏,选择已经在设备上打开的应用进程。点击右侧 "Refresh"按钮以刷新当前页面快照,请注意,设备需要处于亮屏状态并且应用需要处于前台运行。

  2. 页面组件树区,用于查看组件嵌套状态,当前显示为Text组件。

  3. 页面快照区,点击Text组件后,页面组件列表跳转至选中的Text组件。点击右下角 "Pan Screen"按钮以拖移屏幕;点击 、 按钮来缩放页面;点击 "Zoom to Fit Screen"按钮使页面居中并适应屏幕大小。

  4. 组件详情区,展示当前选中Text组件的属性信息,包括组件的坐标、布局信息(Spacing)、尺寸信息(Size)、边框信息(Border)、背景信息(Background)、蒙版信息(Effect)、所有其他属性(All Attributes)。如需精准查找单个属性,可通过页面上方搜索栏进行搜索。

DD一下: 欢迎大家关注公众号<程序猿百晓生>,可以了解到一下知识点。

erlang 复制代码
1.OpenHarmony开发基础
2.OpenHarmony北向开发环境搭建
3.鸿蒙南向开发环境的搭建
4.鸿蒙生态应用开发白皮书V2.0 & V3.0
5.鸿蒙开发面试真题(含参考答案) 
6.TypeScript入门学习手册
7.OpenHarmony 经典面试题(含参考答案)
8.OpenHarmony设备开发入门【最新版】
9.沉浸式剖析OpenHarmony源代码
10.系统定制指南
11.【OpenHarmony】Uboot 驱动加载流程
12.OpenHarmony构建系统--GN与子系统、部件、模块详解
13.ohos开机init启动流程
14.鸿蒙版性能优化指南
.......

问题分析

从页面布局检查器中可以清晰看出,Text组件外部有3层冗余的Stack容器,属于嵌套过多场景。

代码优化

针对在页面布局检查器中发现的冗余Stack容器问题,在应用代码中删除多余的Stack容器。

ts 复制代码
@Entry
@Component
struct ArkUIInspectorExample {
 @State children: Number[] = Array.from(Array(900), (_, k) => k);

 build() {
  Scroll() {
   Grid() {
    ForEach(this.children, (item: Number) => {
     GridItem() {
      Text(item.toString()).border({ width: 2, color: Color.Green })
     }
    }, (item: Number) => item.toString())
   }
   .columnsTemplate('1fr 1fr 1fr 1fr')
   .columnsGap(0)
   .rowsGap(0)
   .size({ width: "100%", height: "100%" })
  }
 }
}

优化结果

布局优化后,使用页面布局检查器可以看到页面上的冗余项已经去除。经过测试,页面滑动时刷新一帧的平均时间比优化前减少1ms。

相关推荐
c2892480843s10 小时前
【鸿蒙心迹】网络请求封装实战:RCP 选型、拦截器与弱网预算
移动开发·网络请求·harmonyos·鸿蒙·rcp
HarmonyOS_SDK15 小时前
【剪贴板体验优化】前置预校验,航旅纵横权限弹窗体验更智能
harmonyos
数据库小学妹15 小时前
MySQL大字段治理:行溢出机制、覆盖索引与拆表
数据库·mysql·性能优化
贾伟康16 小时前
【共创稿事节】HarmonyOS 7.0 Progress进度体系:从接入到生产验证
性能优化·实战·harmonyos·arkts·arkui
贾伟康1 天前
HarmonyOS API 26 HMAF Skill 端侧 A2A 消息去重与上下文最小化
harmonyos·arkts·skill·a2a·hmaf
贾伟康1 天前
HarmonyOS API 26 HMAF Skill 多 Skill 冲突仲裁与可恢复执行
harmonyos·arkts·智能体·skill·hmaf
钉先生贾1 天前
毕业项目:从上游更新到回归发布的完整维护闭环
华为·harmonyos
行者-全栈开发1 天前
【鸿蒙心迹】权限申请全流程——从声明到用户授权的完整链路(HarmonyOS 7.x)
华为·harmonyos
疯华整猫2 天前
我用 Trae 把 Android 内存账重算了一遍
android·性能优化·源码
KevinChaos2 天前
阳台小花园开发手记 01|HarmonyOS 7.0 互动卡片:小花园为何要两套界面
华为·harmonyos