当前位置: 首页 > news >正文

OpenHarmony使用ArkUI Inspector分析布局

● 摘要:视图的嵌套层次会影响应用的性能,开发者应该移除多余的嵌套层次,缩短组件刷新耗时。本文会介绍如何使用ArkUI Inspector工具分析布局,提示应用响应性能。

● 关键字:列举本文相关的关键字:OpenHarmony HarmonyOS 鸿蒙 Inspector 布局检查器 视图嵌套

概述

应用将布局渲染到屏幕上的流畅度影响用户对质量的感知。建议移除多余的嵌套层次减少视图嵌套层次。视图的嵌套层次会影响应用的性能。因此推荐开发者移除多余的嵌套层次,缩短组件刷新耗时。

如果视图嵌套得很深,会导致花费更多的时间来处理,会增加页面渲染时间。在屏幕刷新率为120Hz的设备上,每8.3ms刷新一帧,如果视图的嵌套层次多,可能会导致没法在8.3ms内完成一次屏幕刷新,就会造成丢帧卡顿,影响用户体验。嵌套视图会创建更多的节点,会增加内存消耗。如果嵌套视图是从服务器获取的,这可能会导致额外的网络延迟,增加页面加载的时间。过多的视图嵌套还可能会使页面的结构和代码变得复杂和难以维护,这可能会导致错误和性能问题的可能性增加。

因此,减少视图嵌套层次非常重要。本文会介绍如何使用ArkUI Inspector工具分析布局,提示应用响应性能。

环境准备

从DevEco Studio 4.0 Beta2版本开始集成ArkUI Inspector工具,可以从 OpenHarmony-v4.0-beta2 Release Notes#配套关系 部分下载DevEco Studio 4.0 Beta2版本。

使用场景

开发者可以使用ArkUI Inspector,在DevEco Studio上查看应用在真机上的UI界面显示效果,可以查看查看应用的界面组件树component tree,还可以查看选定组件的属性信息。

在ArkUI Inspector的组件树上选择组件,UI界面自动框选对应组件,属性列表显示当前组件的属性信息。在UI界面点击选择组件,组件树对应组件变化为选中状态,属性列表显示当前组件的属性信息。

ArkUI Inspector工具非常好用。可以使用它分析布局,减少布局嵌套层次,从而提示应用响应性能。

工具介绍

使用连接线把真机连接到开发PC,打开DevEco Studio,在 DevEco Studio 下方点击 ArkUI Inspector,打开 ArkUI Inspector。

点击 RUN 或者 DEBUG 按钮,把应用推包到设备上,在设备应用列表选择当前显示在设备前端的 UI 进程。本文使用的是 Sample聊天实例应用 ,需要选择的进程是com.samples.chat。

ArkUI Inspector 左侧为当前的组件树结构Component Tree,中间栏显示当前设备的 UI 显示界面,右侧在选中组件的情况下为当前组件的属性信息。当设备上 UI 发生变化时,可点击中间栏右上角刷新按钮同步设备上的 UI 效果。可以在左侧组件树上选择或直接在 UI 界面点击选择组件。

如果想退出使用ArkUI Inspector,可以在设备框,点击设备列表的最后一项 Stop inspector,可断开与设备的连接。

性能实践

我们以一个实际案例来看下如何借助ArkUI Inspector工具来优化布局。

检出工程 Sample聊天实例应用 工程代码,使用DevEco Studio编译构建,推送到开发板上运行。

我们选择一个简化的场景,打开和一位朋友的聊天窗口,查看历史聊天信息。刷新ArkUI Inspector工具中的UI界面,如下:可以看出,ListItem列表项中包含一个Column->Row,下面又包含Row和Column子组件。ListItem列表项下的子组件Column这个列容器只包含一个Row子组件容器,Column列容器是不必要的,可以去掉,这样ListItem列表项下的子组件直接为Row子组件即可,从而减少一个视图嵌套层次。一个嵌套层次的影响,可能对性能的影响微乎其微。本实践仅限于用来演示如何使用ArkUI Inspector工具来优化布局。

再看一个例子,在真机上打开 Sample聊天实例应用 的聊天联系人页面,使用ArkUI Inspector工具刷新下UI界面。看左侧的组件树,可以查看组件的嵌套层次,最大有10层嵌套,就可以考虑小是否可以减少嵌套层次。比如,最顶层的Row组件是可以减少的,其他组件也可以类似查看是否必要,没有最优只有更优。

注意事项

1、ArkUI Inspector仅支持OpenHarmony API 9 及以上版本的 Stage 工程
2、需要使用 debug模式编译。
3、已通过 USB 连接设备。
4、使用DevEco Studio 4.0 Beta2及以上的版本。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 一套高效、稳定的自卸车自动充电系统
  • 3.7 Browser -- useMediaQuery
  • 数字经济GBC管理平台高管培训在京圆满成功举办
  • uniapp+vue3+setup返回上一页传参
  • 【Rust练习】11.struct
  • Python——模块和包
  • Python 实现电子邮件加密技术解析与实用代码案例
  • 火语言RPA流程组件介绍--提示/弹出/确认消息
  • mysql和pg等数据库之间的数据迁移实战分享
  • MathType常见问题汇总
  • 讲一下如何优化Android应用的启动速度
  • vulhub xxe靶机通关教程
  • PLC边缘计算网关的选择策略-天拓四方
  • 怎么使用PPT倒计时插件?这款在线PPT工具,堪称办公必备!
  • uniapp二维码生成
  • docker容器内的网络抓包
  • Java超时控制的实现
  • Java反射-动态类加载和重新加载
  • leetcode98. Validate Binary Search Tree
  • opencv python Meanshift 和 Camshift
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 力扣(LeetCode)22
  • 前端设计模式
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 我建了一个叫Hello World的项目
  • 一些关于Rust在2019年的思考
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • 正则表达式-基础知识Review
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • #NOIP 2014# day.2 T2 寻找道路
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (Java)【深基9.例1】选举学生会
  • (Qt) 默认QtWidget应用包含什么?
  • (实战篇)如何缓存数据
  • (四) 虚拟摄像头vivi体验
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET 8 跨平台高性能边缘采集网关
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET 服务 ServiceController
  • .Net 应用中使用dot trace进行性能诊断
  • .Net多线程Threading相关详解
  • .net下的富文本编辑器FCKeditor的配置方法
  • .net中调用windows performance记录性能信息
  • @SpringBootApplication 包含的三个注解及其含义
  • [ solr入门 ] - 利用solrJ进行检索
  • [000-01-022].第06节:RabbitMQ中的交换机介绍
  • [012-1].第12节:Mysql的配置文件的使用
  • [2016.7 day.5] T2
  • [AIGC] 使用Curl进行网络请求的常见用法
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [Android View] 可绘制形状 (Shape Xml)