1、高性能鸿蒙应用开发分享人:鸿蒙ArkUI框架技术专家 王雷鸿蒙应用构成鸿蒙应用构成构成构成Stage模型模型应用组件1.组件分类stage-model-component -UIAbility组件:包含UI,提供展示UI的能力,主要用于和用户交互。详细介绍请参见UIAbility组件概述。-ExtensionAbility组件:提供特定场景(如卡片、输入法)的扩展能力,满足更多的使用场景。详细介绍请参见ExtensionAbility组件概述。2.开发方式 采用面向对象的方式,将应用组件以类接口的形式开放给开发者,可以进行派生,利于扩展能力。进程模型1.主进程2.ExtensionAbilit
2、y进程3.渲染进程线程模型1.ArkTS引擎实例的创建 一个进程可以运行多个应用组件实例,所有应用组件实例共享一个ArkTS引擎实例。2.线程模型 ArkTS引擎实例在主线程上创建。3.进程内对象共享:支持。任务管理模型 每个UIAbility组件实例创建一个任务。-任务会持久化存储,直到超过最大任务个数(根据产品配置自定义)或者用户主动删除任务。-UIAbility组件之间不会形成栈的结构。配置文件使用app.json5描述应用信息,module.json5描述HAP信息、应用组件信息。Stage ModeUIAbilityServiceExtensionAbilityExtensionAb
3、ility.InputMethodExtensionAbilityDataShareExtensionAbilityDriverExtensionAbility性能影响性能影响纬度纬度 语言纬度:ArkTS 线程模型:Worker&TaskPool UI构成:ArkUI框架 图形渲染:ArkGraphics渲染引擎 分析工具ArkTSArkTS语言语言特性特性高性能容器类库高性能容器类库线性线性容器容器非线性非线性容器容器ArrayListHashMapVectorHashSetListTreeMapLinkedListTreeSetDequeLightWeightMapQueueLightW
4、eightSetStackPlainArrayimport ArrayList from ohos.util.XXX;ArkTS语言使用过程中性能提升语言使用过程中性能提升方法方法 热点循环中常量提取,减少属性访问次数 避免频繁使用delete 数值计算避免溢出 避免使用稀疏数组 使用字面量进行对象创建 避免动态添加属性 避免使用type类型标注 声明参数要和实际的参数一致 避免动态声明function与class了解启动流程各阶段执行内容,合理配置应用了解启动流程各阶段执行内容,合理配置应用结构,提升启动结构,提升启动速度速度合理配置启动页面图标尺寸,减少解码开销合理配置启动页面图标尺寸,减
5、少解码开销 abilities:name:EntryAbility,srcEntrance:./ets/entryability/EntryAbility.ts,description:$string:EntryAbility_desc,icon:$media:icon,label:$string:EntryAbility_label,startWindowIcon:$media:startWindowIcon,/在这里修改启动页图标,建议不要超过256像素x256像素 startWindowBackground:$color:start_window_background,visible:t
6、rue,skills:entities:entity.system.home ,actions:action.system.home 按需引入模块,合理使用生命周期,避免按需引入模块,合理使用生命周期,避免耗时耗时操作操作首页组件按需创建,页面生命周期避免耗首页组件按需创建,页面生命周期避免耗时时操作操作使用异步机制,降低使用异步机制,降低UIUI线程同步线程同步操作负载操作负载组件中的异步组件中的异步逻辑逻辑T Ta as sk kP Po oo ol l机机制制wwo or rk ke er r机机制制Image解码器UI ThreadBackground Thread共享内存 Pixel