OpenHarmony 使用 ArkUI Inspector 分析布局

news2024/11/18 12:28:50

● 摘要:视图的嵌套层次会影响应用的性能,开发者应该移除多余的嵌套层次,缩短组件刷新耗时。本文会介绍如何使用 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 及以上的版本。

参考资料

[1] Sample聊天实例应用。

[2] 减少视图嵌套层次

[3] OpenHarmony-v4.0-beta2 Release Notes

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/972131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot找不到注册的bean

1、错误描述 A component required a bean named ‘fixedAssetsShareMapper’ that could not be found.Action:Consider defining a bean named ‘fixedAssetsShareMapper’ in your configuration.2、问题分析 1、该错误提示表明在你的应用程序中有一个组件(可能…

【技术分享】RK Android11系统SD卡启动方法

本文基于Purple Pi OH 3566主板,介绍Android11源码的修改,获得可从SD卡启动的Android11系统镜像。 Purple Pi OH作为一款兼容树莓派的开源主板,采用瑞芯微RK3566 (Cortex-A55) 四核64位超强CPU,主频最高达1.8 GHz,算力高达1Tops,…

stable diffusion实践操作-大模型介绍-SDXL1大模型

系列文章目录 大家移步下面链接中,里面详细介绍了stable diffusion的原理,操作等(本文只是下面系列文章的一个写作模板)。 stable diffusion实践操作 提示:写完文章后,目录可以自动生成,如何生…

Qt鼠标点击事件处理:显示鼠标点击位置(完整示例)

Qt 入门实战教程(目录) 前驱文章: Qt Creator 创建 Qt 默认窗口程序(推荐) 什么是事件 事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。 事件(event)驱动…

BFS练习1

BFS练习1 - 题目 - Daimayuan Online Judge 问题描述: 刚开始吓一跳,以为有什么更简单的呢,因为每一次都要走一次bfs,看了数据范围后,感觉跑一次bfs进行记录即可。 代码: void solve() {int a,k; cin>…

【Python】OpenCV安装

安装起来相当简单,但是看到很多博客的安装过程复杂得很。 pip install opencv-python测试代码: import cv2 as cv img cv.imread("f6759b83f3201997fd7ea1c9b9130a44.jpg")cv.imshow("Display window", img) k cv.waitKey(0) # …

Tiny Player Mac:小而美,音乐播放的极致体验

对于追求音质和操作简便的Mac用户来说,Tiny Player Mac是一款不可多得的音乐播放器。它以简洁的界面、强大的功能和优异的性能,吸引了无数用户的目光。接下来,让我们一起了解这款小而美的音乐播放器。 Tiny Player Mac支持多种音频格式&#…

使用 ModelScope 文本到视频合成模型

链接如下: ModelScope Text To Video Synthesis - a Hugging Face Space by damo-vilabDiscover amazing ML apps made by the communityhttps://huggingface.co/spaces/damo-vilab/modelscope-text-to-video-synthesis 标题:使用 ModelScope 文本到视…

OSI与TCP IP各层的结构与功能,都有哪些协议

分析&回答 OSI七层模型 层功能TCP/IP协议族应用层文件传输,电子邮件,文件服务,虚拟终端TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet表示层数据格式化,代码转换…

【C++】C++面向对象编程三大特性之一——继承

❤️前言 本篇博客主要是关于C面向对象编程中的三大特性之一的继承,希望大家能和我一起共同学习进步! 正文 我们刚刚学习一块全新的知识,首先简单关注一下它的概念和简单的使用方法。 继承的概念及定义 继承的概念 继承的概念:…

内网穿透实战应用-如何通过内网穿透实现远程发送个人本地搭建的hMailServer的邮件服务

文章目录 1. 安装hMailServer2. 设置hMailServer3. 客户端安装添加账号4. 测试发送邮件5. 安装cpolar6. 创建公网地址7. 测试远程发送邮件8. 固定连接公网地址9. 测试固定远程地址发送邮件 hMailServer 是一个邮件服务器,通过它我们可以搭建自己的邮件服务,通过cpolar内网映射工…

CentOS7 Hadoop3.3.0 安装与配置

一、安装JDK 1、创建文件夹tools和training用于存放压缩包和解压使用,tools存放压缩包,training用于解压后安装jdk和hadoop的路径。 1)回到路径为 / 的位置 cd /2) 创建 tools 和 training mkdir toolsmkdir training3) 进入tools文件夹 …

47、TCP的流量控制

从这一节开始,我们学习通信双方应用进程建立TCP连接之后,数据传输过程中,TCP有哪些机制保证传输可靠性的。本节先学习第一种机制:流量控制。 窗口与流量控制 首先,我们要知道的是:什么是流量控制&#xff…

AI篇-chatgpt基本用法(文心一言也适用)

目录 (1)基本规则 (2)例子1-文章摘要 (3)例子2-代码生成 (4)文心一言链接 (1)基本规则 相比于搜索引擎,ChatGPT的优势在于其高效的想法关联和…

Passwork 和 KeePass 密码管理器对比和选择

互联网蓬勃发展的今天,基本上我们能够想到的功能都可以找到相似的软件辅助工作效率。包括我们日常用到比较多的各种网站、软件账户的管理,如果用密码管理器管理可以确保信息的安全以及提高密码的安全性。在前面的文章中,乐小虎有写过”横向评…

ES6中导入import导出export

ES6使用 export 和 import 来导出、导入模块 用法 /** 导出 export *///分别导出 export let name 孙悟空; export function sum(a, b) {return a b; } } //先定义再导出 let age 18 export {age}/** 默认导出 export default */const a 默认导出; export default a;/**…

CS420 课程笔记 P4 - 以16进制形态编辑游戏文件

文章目录 IntroductionFinding save filesStringsUnicodeExample!Value searchHealth searchConclusion Introduction 这节课我们将学习编辑十六进制,主要用于编辑保存文件,但十六进制编辑涉及的技能可以很好地转移到: Save file editingRe…

CG MAGIC分享3d Max中的Corona渲染器材质如何成转换VRay材质?

大家无论是使用Corona渲染器还是Vray渲染器时,进行材质问题时,都会遇到转化材质问题。 如何将CR转换成VR或者将VR转换CR材质呢? 对于这两者之间转换最好最好的方法只能是材质转换器。 CG MAGIC小编,梳理了两种方法,大…

python-wordcloud词云

导入模块 from wordcloud import WordCloud import jieba import imageio import matplotlib.pyplot as plt from PIL import ImageGrab import numpy as npwordcloud以空格为分隔符号,来将文本分隔成单词 PIL pillow模块 img imageio.imread(image.png)这行代码…

ToBeWritten之ATTCK实践的常见误区与最佳实践

也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬…