响应优化概述
响应(Response)是指应用在运行中,由用户直接或间接做出一个行为请求,当程序接受了该请求,随即做出一系列运算,最终界面发生变化的过程。简单来说即用户发出指令、程序执行、设备显示变化。
图1 点击响应起止点示意图
鸿蒙《应用性能体验建议》中,给出了应用或元服务启动响应时延应、完成时延,以及应用内点击响应时延应、完成时延的相关时间数据。
点击响应优化就是指通过分析响应阶段、优化应用性能、加快点击后页面的响应速度,使用户可以得到流畅的操作体验。开发者优化自己应用的点击响应速度,既满足产品功能的高性能要求,增强产品同质化竞争中的优势,又能不断提升用户满意度。
问题分析
影响点击响应性能的因素有很多,借助DevEco Studio集成的相关分析工具(AppAnalyzer、DevEco Profiler Frame任务、ArkUI Inspector),可以收集大量的系统数据,自动执行重复任务,建立统一的优化标准和流程,减少个人差异和误操作的可能性,帮助开发人员更好地了解性能瓶颈和优化潜力。在分析优化的过程中,可能用到以下工具中的一个或多个。
1、AppAnalyzer:
AppAnalyzer是DevEco Studio中提供的检测评分工具,用于测试并评价HarmonyOS应用或元服务的质量,能快速提供评估结果和改进建议,当前支持的测试类型包括兼容性、性能、UX测试和最佳实践等,其中点击操作响应是性能类型中的一项检测规则,开发者可以使用该工具检测响应性能。 具体使用方法参考《应用与服务体检》。
2、Frame分析:
开发应用或服务过程中,如果发现有表单滑动不顺畅、页面交互延迟、动效不流畅等卡顿现象时,可以使用DevEco Profiler提供的Frame场景分析能力,录制卡顿过程中的关键数据进行分析,从而识别出导致卡顿丢帧的原因所在。此外,Frame任务窗口还集成了Time、CPU场景分析任务的功能,方便开发者在分析丢帧数据时同步对比同一时段的其他资源占用情况。 具体分析方法参考《Frame分析》。
3、ArkUI Inspector
ArkUI Inspector是DevEco Studio中提供用于检查UI的工具,开发者可以借助它预览真机或模拟器中的UI效果,快速定位布局层级问题,也可以观察组件属性、不同组件之间的关系等。 具体的使用场景和操作参考《布局分析》。
优化方法
本章节介绍了从UI优化、懒加载技术、并发优化、数据库调用优化、逻辑优化、资源释放优化到视觉感知优化等多个方面,为开发者提供全面的点击响应优化策略和具体实现方法,旨在帮助开发者提升应用的操作响应速度和用户体验。具体技术简介如下:
1、UI优化 :
-
减少嵌套层级 :通过避免冗余的嵌套和采用扁平化布局来优化布局的嵌套层级,减少节点数和合理使用布局组件,以提升响应性能。
-
渲染控制 :利用ArkUI提供的if/else条件渲染功能,根据应用状态控制UI的渲染,减少不必要的渲染开销。
-
缓存机制 :利用renderGroup缓存机制,对组件及其子组件进行离屏绘制并缓存结果,以减少重复绘制的负载。
2、懒加载技术 :
-
LazyForEach :使用LazyForEach懒加载技术替换ForEach,避免一次性加载所有元素,提升首帧绘制速度和响应性能。
-
动态import :通过动态模块加载机制,根据实际需求加载相关模块,减少不必要的资源消耗,优化模块层次的懒加载性能。
3、并发优化 :
-
异步任务处理 :利用TaskPool和Worker完成耗时操作,避免阻塞主线程,提高应用程序的并发处理能力和响应速度。
-
优化数据加载 :合理使用组件异步加载特性,减少用户等待时间,给用户带来良好的交互体验。
4、数据库调用优化 :
-
减少API调用次数 :通过减少不必要的数据库API调用,特别是在循环查询中避免重复调用获取索引等耗时操作,提升数据处理效率。
-
IPC优化 :针对IPC通信进行优化,减少通信开销,提升应用性能。
5、逻辑优化 :
-
数据结构选择 :选择合适的数据结构,如array、map、set等,以提高数据存取效率。
-
缓存使用 :合理使用缓存,对重复使用的运算结果进行缓存,减少计算时间。
-
内存管理 :优化new和delete的使用频次,避免在循环中频繁进行内存分配和回收操作,影响性能。
-
延迟执行资源释放操作 :将资源关闭和释放操作放在setTimeout函数中异步执行,避免阻塞主线程。
-
减小拖动识别距离:应用识别拖动手势事件时需要设置合理的拖动距离,设置不合理的拖动距离会导致滑动不跟手、响应时延慢等问题。针对此类问题可以通过设置distance大小来解决。
6、视觉感知优化 :
-
动画元素 :在交互动作开始时添加动画元素,如单击效果、转场动画等,提升用户响应速度的感知。
-
连贯的感知元素 :通过连贯的动画和视觉隐喻,平滑过渡用户的注意力,提升用户体验。
更多详细内容和代码实现方法,可见原文:
点击响应优化-性能-最佳实践 - 华为HarmonyOS开发者 (huawei.com)
HarmonyOS NEXT最佳实践集合: