首页 > 其他分享 >鸿蒙 App 应用开发性能优化全面指南

鸿蒙 App 应用开发性能优化全面指南

时间:2024-06-07 21:59:00浏览次数:19  
标签:指南 鸿蒙 App 开发 UI 应用 组件 卡顿

优化应用性能对于应用开发至关重要。通过高性能编程、减少丢帧卡顿、提升应用启动和响应速度,可以有效提升用户体验。本文将介绍一些优化应用性能的方法,以及常用的性能调优工具。

ArkTS高性能编程

为了提升代码执行速度,进而提升应用整体性能,可以采取以下措施:

  • 使用ArkTS高性能编程实践
    更有利于方舟编译运行时进行编译优化,生成更高性能的机器码,保障程序运行得更快。

  • 使用AOT模式对应用进行编译优化:
    方舟编译运行时通过采用PGO(Profile-Guided-Optimization,配置文件引导型优化)方式,提前生成高性能机器码,从而提升程序运行速度。

减少丢帧卡顿

丢帧卡顿是指应用在运行时出现卡顿或者画面不流畅的现象。为了减少丢帧卡顿,可以采取以下措施:

  • 避免在主线程上执行耗时操作:
    UI主线程是应用中最重要的线程之一,在主线程上执行耗时操作会阻塞UI渲染,从而导致UI主线程的负载过高。因此,可以将耗时操作放在TaskPool或者Worker等后台线程中执行。

  • 减少渲染进程的冗余开销:
    使用资源图代替绘制、合理使用renderGroup、尺寸位置设置尽量使用整数,可以减少渲染所需的时间,从而减少丢帧卡顿。

  • 避免频繁更新UI:
    减少不必要的UI更新操作,例如过多的界面刷新或布局计算。

  • 优化布局性能
    应用开发中的用户界面(UI)布局是用户与应用程序交互的关键部分。不合理的布局越多,视图的创建、布局、渲染等流程所需的时间就越长。因此,减少嵌套层次或者使用高性能布局节点,可以减少丢帧卡顿。

  • 组件复用配合LazyForEach:
    使用ArkUI开发范式提供的组件复用机制,通过重复利用已经创建过并缓存的组件对象,降低组件短时间内频繁创建和销毁的开销,提升组件加载效率,降低UI线程负载,从而减少丢帧卡顿。

  • 精确控制状态变量的关联组件数
    @State等状态变量关联组件越多,状态数据变更时刷新的组件越多,UI线程负载越重,因此移除冗余的组件关联可以减少丢帧卡顿。

  • 在对象上谨慎使用状态变量关联
    对象中的任何一个成员变量发生变更均会引起对象关联组件的刷新,因此应对有状态变量关联的对象进行最小化处理,从而减少丢帧卡顿。

提升应用启动和响应速度

应用启动和响应速度是用户体验的重要组成部分。为了提升应用启动响应速度,可以采取以下措施:

  • 延迟加载:
    将不必要的资源延迟加载可以减少应用启动时间。使用ListGrid以及Swiper等容器组件时,配合系统提供的LazyForEach数据懒加载能力,可以有效减少应用启动时间和内存占用。

  • 使用缓存:
    选择合适的缓存策略可以提高应用程序的性能和响应速度,从而提升应用响应速度。

  • 使用异步加载:
    使用异步加载可以在后台线程中处理耗时操作,从而提升应用响应速度。

使用性能调优工具

使用性能调优工具可以帮助开发者找出应用中的性能问题。以下是DevEco Studio提供的一些常用性能调优工具:

  • ArkUI Inspector:
    用于检查和调试应用程序页面布局的情况。

  • Launch Profiler:
    分析启动过程中各阶段的性能问题。

  • Frame Profiler:
    用于深度分析应用或服务卡顿丢帧的原因。

  • Time Profiler:
    在应用/服务运行时, 展示热点区域内基于 CPU 和进程耗时分析的调用栈情况。

  • Allocation Profiler:
    实时监测应用或服务内存使用情况。

  • Snapshot Profiler:
    用于分析应用程序内存使用情况。

  • CPU Profiler
    可以监测应用的CPU使用情况。

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

标签:指南,鸿蒙,App,开发,UI,应用,组件,卡顿
From: https://blog.csdn.net/m0_70748458/article/details/139506488

相关文章

  • Bug记录:Content-Type 'application/json;charset=UTF-8' is not supported异常解决
    Content-Type'application/json;charset=UTF-8'isnotsupported异常解决前提:确定不是因为Content-Type导致的异常,controller层有注解@RequestBody。报错详情:确定不是因为缺少Jackson依赖或者版本过低:注意到报错信息上边有一条警告日志:.c.j.MappingJackson2HttpMessageCo......
  • NXP i.MX 93开发板的Qt开发指南-基于米尔MYD-LMX9X
    1. 概述Qt 是一个跨平台的图形应用开发框架,被应用在不同尺寸设备和平台上,同时提供不同版权版本供用户选择。米尔 NXPi.MX93 开发板(MYD-LMX9X开发板)使用 Qt6.5 版本进行应用开发。在 Qt 应用开发中,推荐使用 QtCreator 集成开发环境,可以在 LinuxPC 下开发 Qt 应用......
  • uni-app项目uview的表单验证在小程序上不生效
    前情uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验非常棒,公司项目就是主推uni-app,在uniapp生态中uView是其中非常好的全平台的第三方开源ui库,我在公司项目中果断的使用了它。坑位在用uView做小程序表单验证的时候......
  • Android设置app开机自启
    Android7.1.1开机自动启动配置在AndroidManifest.xml文件中添加权限<uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED"/>在AndroidManifest.xml文件中注册接收广播配置,添加到manifest>application节点下<receiverandroid:name=".MyReceive......
  • 【纯血鸿蒙】——如何实现多端部署?(开发重点建议收藏)
    一次开发,多端部署介绍鸿蒙系统采用微内核分布式系统的架构,分布式技术逐渐打破单一硬件边界,一个应用或服务,可以在不同的硬件设备之间随意调用、互助共享,让用户享受无缝的全场景体验。而作为应用开发者,广泛的设备类型也能为应用带来广大的潜在用户群体。但是如果一个应用需要在......
  • 超详细!新手入门PMP®考试指南,收藏起来备考更高效​!
    回复数字“6”,查看PMP考试过关口诀无论你是刚刚踏入项目管理领域的新手,对于PMP®考试充满好奇与期待;还是已经在职场中摸爬滚打多年,希望通过PMP®认证来进一步提升自己的项目管理能力和职业竞争力。相信这份指南都会为你提供宝贵的报考信息和备考策略01PMP®考试简介PMP®......
  • 探索Java 17:新特性解析与实战指南
    引言Java作为企业级应用开发的首选语言之一,每次更新都带来了许多期待与讨论。Java17,作为最新的长期支持版本,不仅稳定了过去的实验特性,还引入了多项改进和新功能,本文将深入探讨这些新特性,并提供实用的代码示例来展示如何在实际项目中应用这些新特性。Java17的核心新特性Jav......
  • uniapp零基础到项目实战( 附送250套精选项目源码),全网最全保姆式教程
    今天开始带着大家一起零基础学习uniapp,在下面的课程中我们就简称uniapp为uni吧。我这里从零基础开始教大家,后面可以带大家简单的做一个实战项目。所以不用担心自己没有基础,跟着认真学习就行了的。一,认识uniapp1-1,uniapp的好处我们学习uniapp之前先要认识uniapp的好处看下......
  • 超级详细的mysql数据库安装指南
    如果你的电脑是windows,参考下面的安装步骤。一、下载mysql数据库进入MySQL官方网站(MySQLCommunityDownloads),按下图顺序点击“进入下载页面 在下载页面拉到最下面会看到下图中的安装软件 MSIInstaller注意有两个,这两个有什么区别呢?第一个(大小是10多M)是联网在线安装,会......
  • 鸿蒙HarmonyOS实战-ArkTS语言基础类库(通知)
    ......