Harmoney OS学习笔记——应用程序框架概述
概述
应用程序框架是连接开发者与用户的桥梁
用户行为:应用内的交互、应用间的交互、应用的跨设备流转
开发者行为:提供应用进程管理、应用生命周期调度、应用组件生命周期调度、应用上下文环境、系统环境监听等相关能力等是实现用户功能的关键。
用户在应用中的行为需要开发者借助应用程序框架的能力来实现
应用程序框架与应用模型
应用程序框架
是一种编程框架,用来简化应用程序的开发过程,提高代码的可重用性和可维护性。可以帮助开发人员更快速、更高效地开发应用程序。
应用模型
应用模型是一个应用程序的模型,它是一种抽象描述。
用于表示应用程序的不同方面,例如应用组件、进程模型、线程模型、任务管理以及包管理。
应用模型提供了一种统一的语言和架构来描述应用程序的各个方面。
应用模型可以帮助开发者更好地理解应用程序的架构和设计,从而更有效地利用应用程序框架。
两者之间的关系
应用程序框架可以被看做是应用模型的一种实现方式。
应用模型是抽象,而应用程序框架是具体的实现方式。
开发人员可以根据应用模型描述应用程序的结构和行为,然后使用应用程序框架来实现这些描述。
Stage模型设计思想
- 为复杂应用而设计
- 不同应用组件间实例共享:可以减少复杂应用运行时对内存的占用
- 基于面向对象的开发方式:可以使得复杂应用代码可读性高、易维护性好、可拓展性强
- 原生支持应用组件级的跨端迁移和多端协同
- Stage模型提供了应用组件间通信的RPC调用能力,在不同设备的应用组件可以便携的迁移数据和状态
- UIAbility与UI分离:便可以利用ArkUI的声明式特点,通过组件中数据和状态的变化更新用户界面,从而实现跨端迁移和多端协同。
- UI展示与服务能力合一的UIAbility组件
- 支持多设备和多窗口形态
- UIAbility生命周期定义:Stage模型为应用组件设计了一套生命周期来适应不同的设备,提供统一的生命周期管理,可以减少应用组件在不同设备上的行为差异。
- 组件管理和窗口管理解耦:为系统提供了对应用组件进行裁剪以及拓展窗口形态的能力
- 平衡应用能力与系统管控成本
- 严格的后台管理:应用程序不能随意驻留在后台
- 基于场景的服务机制:Stage模型为卡片服务、输入法服务等提供了特定的应用组件,以满足更多的开发场景。
- 严格进程模型:应用后台行为会受到管理,防止一些恶意的应用行为
工程目录结构
文件类型
- 资源文件
- 配置文件
- ArkTS文件
ArkTS源码文件
页面文件、Ability类、常量类都属于ArkTS源码文件,主要存放在模块的ets目录下。
其中entryability目录下放置的是当前模块中定义的Ability组件;pages目录主要放置当前模块的页面文件
配置文件
每个项目的工程目录下必须包含应用配置文件,这些配置文件会向编译工具、操作系统和应用市场提供应用的基本信息,几种主要配置文件的类型如下:
- app.json5:应用级配置文件,提供了应用的配置信息,如应用的唯一标识、版本号、应用图标、应用名称等信息
- module.json5:模块级配置文件
- 包含模块的基础配置,如模块名称、模块类型、标识当前模块可以运行在哪类设备上;
- 定义了当前模块的应用组件的配置信息,主要包含UIAbility的名称、基本描述、入口代码路径等,这些配置信息只针对当前模块下的UIAbility生效
- 包括标识模块的路由表信息,主要定义了跳转页面名称、页面所在模块名称、页面路径等路由配置信息
- 还包括模块权限配置信息,如过程序运行时需要访问网络或者常驻后台等的权限,需要想系统申请权限信息
- oh-package.json5:依赖管理配置文件,其主要定义了名称、版本号、简介、作者、以及代码汇总依赖的第三方库等信息。
资源文件
分为应用级资源和模块级资源
应用级资源可以被项目中所有的模块引用,放置在AppScope下的resource目录下
模块级资源放置在各模块下的resources目录下
资源目录可以放置的资源:
- element目录:主要放置颜色、数字、字符串等一些元素资源
- media目录:主要放置图片、音频、视频文件等媒体资源
- profile目录:
- 主要放置自定义配置文件,如页面配置、卡片配置
- DevEco Studio默认会在profile目录下生成一个main_pages配置文件,定义了模块页面的路由集合
- 中英文目录:zh_CN、en_US, 包含了模块所用到的一些中英文资源,应用运行时会根据设备的语言环境进行优先匹配资源
- rawfile目录:可以存放各类资源文件,但不会被直接打包进应用,不会经过编译过程,也不会被赋予资源文件ID