本示例展示了提升应用冷启动速度的五种方式:
应用初始页面 | 任务完成界面 |
---|---|
使用说明
应用在启动后显示文本"hello world";几秒后耗时操作完成,文本变更为"task complete"。
entry/src/main/
├── ets
│ ├── common
│ │ └── Logger.ts // 日志工具
│ ├── entryability
│ │ └── EntryAbility.ts // UIAbility类
│ ├── myabilitystage
│ │ └── MyAbilityStage.ts // AbilityStage类
│ └── pages
│ └── Index.ets // 首页
├── module.json5
└── resources
├── base
│ ├── element
│ │ ├── color.json
│ │ └── string.json
│ ├── media
│ │ ├── highResolutionIcon.png // 高分辨率图标
│ │ ├── icon.png
│ │ └── startIcon.png
│ └── profile
│ └── main_pages.json
├── en_US
│ └── element
│ └── string.json
└── zh_CN
└── element
└── string.json
通过设置合适分辨率的startWindowIcon,缩短应用进程创建&初始化阶段耗时,进而提升应用冷启动速度。
entry/src/main/module.json5
{
"module": {
"name": "entry",
"type": "entry",
"srcEntry": "./ets/myabilitystage/MyAbilityStage.ts",
"description": "$string:module_desc",
"mainElement": "EntryAbility",
"deviceTypes": [
"default"
],
"deliveryWithInstall": true,
"installationFree": false,
"pages": "$profile:main_pages",
"abilities": [
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ts",
"description": "$string:EntryAbility_desc",
"icon": "$media:icon",
"label": "$string:EntryAbility_label",
"startWindowIcon": "$media:startIcon", // 优化前为"$media:highResolutionIcon"
"startWindowBackground": "$color:start_window_background",
"exported": true,
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
]
}
]
}
}
详情可参见:设置合适分辨率的startWindowIcon
通过减少import的模块,可以缩短Application&Ability初始化阶段耗时,进而提升应用冷启动速度。
entry/src/main/ets/entryability/EntryAbility.ts
// 优化减少import的模块
// import ability from '@ohos.ability.ability';
// import dataUriUtils from '@ohos.ability.dataUriUtils';
// import errorCode from '@ohos.ability.errorCode';
// import featureAbility from '@ohos.ability.featureAbility';
// import particleAbility from '@ohos.ability.particleAbility';
// import wantConstant from '@ohos.ability.wantConstant';
// import common from '@ohos.app.ability.common';
// import Configuration from '@ohos.app.ability.Configuration';
// import contextConstant from '@ohos.app.ability.contextConstant';
// import ConfigurationConstant from '@ohos.app.ability.ConfigurationConstant';
// import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility';
// import GesturePath from '@ohos.accessibility.GesturePath';
// import GesturePoint from '@ohos.accessibility.GesturePoint';
// import distributedAccount from '@ohos.account.distributedAccount';
// import osAccount from '@ohos.account.osAccount';
import AbilityConstant from '@ohos.app.ability.AbilityConstant';
import UIAbility from '@ohos.app.ability.UIAbility';
import Want from '@ohos.app.ability.Want';
import window from '@ohos.window';
import logger from '../common/Logger';
详情可参见:减少import的模块
通过将AbilityStage生命周期回调接口中的耗时操作改为异步延迟执行,可以缩短AbilityStage生命周期阶段耗时,进而提升应用冷启动速度。
entry/src/main/ets/myabilitystage/MyAbilityStage.ts
export default class MyAbilityStage extends AbilityStage {
onCreate(): void {
// 应用的HAP在首次加载的时,为该Module初始化操作
// 耗时操作
// this.computeTask();
this.computeTaskAsync(); // 异步任务
}
// ...
}
详情可参见:避免在AbilityStage生命周期回调接口进行耗时操作
通过将Ability生命周期回调接口中的耗时操作改为异步延迟执行,可以缩短Ability生命周期阶段耗时,进而提升应用冷启动速度。
通常与应用冷启动速度相关的生命周期回调为onCreate、onWindowStageCreate和onForeground,以下以onCreate为例进行说明。
entry/src/main/ets/entryability/EntryAbility.ts
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
logger.info('Ability onCreate');
// 耗时操作
// this.computeTask();
this.computeTaskAsync(); // 异步任务
}
// ...
}
详情可参见:避免在Ability生命周期回调接口进行耗时操作
通过将自定义组件的生命周期回调接口中的耗时操作改为异步延迟执行,可以缩短加载绘制首页阶段耗时,进而提升应用冷启动速度。
entry/src/main/ets/pages/Index.ets
@Entry
@Component
struct Index {
// ...
aboutToAppear() {
// 耗时操作
// this.computeTask();
this.computeTaskAsync(); // 异步任务
let context = getContext(this) as Context;
this.text = context.resourceManager.getStringSync($r('app.string.startup_text'));
}
// ...
}
详情可参见:自定义组件生命周期回调接口里避免耗时操作
不涉及。
不涉及。
1.本示例仅支持标准系统上运行,支持设备:RK3568。
2.本示例已适配API version 10版本SDK,版本号:4.0.10.13。
3.本示例需要使用DevEco Studio 4.0 (Build Version: 4.0.0.600 构建 2023年10月17日)及以上版本才可编译运行。
如需单独下载本工程,执行如下命令:
git init
git config core.sparsecheckout true
echo code/DocsSample/Ability/Performance/Startup/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。