应用模型 是系统为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必备的组件和运行机制。
简言之:应用模型就是 应用的施工图纸,他规范了:程序运行流程、项目结构、文件功能等……
了解应用模型之后,就可以知道:
- 实现某个功能需要在哪个文件编码;
- 如何感知应用的状态变化(启动、关闭、且后台)
- 如何调整项目配置;
- …………
随着系统的演进发展,先后提供了两种应用模型:
- FA模型:从API 7开始支持的模型,已经不再主推。
- Stage模型:从API 9开始新增的模型,是目前主推且会长期演进的模型。
Stage模型 - 目录概览
AppScope > app.json5:应用的全局配置信息。
- entry:HarmonyOS工程模块,编译构建生成一个HAP包。
- src > main > ets:用于存放ArkTS源码。
- src > main > ets > entryability:应用 / 服务的入口。
- src > main > ets > pages:应用 / 服务包含的页面。
- src > main > resources:用于存放应用 / 服务所用到的资源文件。
- src > main > module.json5:模块应用配置文件。
- build-profile.json5:当前的模块信息、编译信息配置项,包括buildOption、targets配置等。
- hvigorfile.ts:模块级编译构建任务脚本,开发者可以自定义相关任务和代码实现。
- obfuscation-rules.txt:混淆规则文件。
- oh_modules:用于存放三方库依赖信息。
- build-profile.json5:应用级配置信息,包括签名signingConfigs、产品配置products等。
- hvigorfile.ts:应用级编译构建任务脚本。
Stage模型 - app.json5应用配置
应用配置在工程的AppScope目录下的app.json5配置文件中。
{
"app": {
"bundleName": "包名 不可省略",
"vendor": "应用开发厂商描述 不可省略",
"versionCode": "版本号 数值越大版本越高",
"versionName": "给用户看的版本号",
"icon": "应用图标",
"label": "应用名"
}
}
Stage模型 - module.json5模块配置
module.json5配置文件,配置ability 入口图标 和 标签配置。
{
"module": {
...
"abilities": [
{
"icon": "$media.icon",
"label": "$string:EntryAbility_label"
}
...
]
}
}
Stage模型 - UIAbility组件
每一个UIAbility实例,都对应于一个最近任务列表中的任务。
UIAbility是一种包含用户界面的应用组件,主要用于和用户进行交互。
一个应用可以有一个UIAbility,也可以有多个UIAbility。
- 单UIAbility:任务列表中只有一个任务。
- 多UIAbility:在任务列表中会有多个任务。
Stege模型 - UIAbility的添加和设置启动
Stage模型 - UIAbility组件的生命周期
当用户打开、切换和返回到对应应用时,应用中的UIAbility实例会在其生命周期的不同状态之间切换。
- onCreate:Ability创建时回调,执行初始化业务逻辑操作;
- onDestory:Ability销毁时回调,执行资源清理等操作;
- onForeground:应用从后台转到前台时触发;
- onBackground:当应用从前台转到后台时触发;
……