一、课程笔记
1.1 应用程序框架
应用程序框架是一种编程框架,用来简化应用程序的开发过程,提高代码的可重用性和可维护性。可以帮助开发人员更快速、更高效地开发应用程序。
应用模型是一个应用程序的模型,它是一种抽象描述。它用于表示应用程序的不同方面,如应用组件、进程模型、线程模型、任务管理,以及包管理等。应用模型提供了一种统一的语言和架构来描述应用程序的各个方面。应用模型可以帮助开发者更好地理解应用程序的架构和设计,从而更有效地利用应用程序框架。从模型演进的角度分为FA模型和Stage模型。
二者之间的关系:应用程序框架可以被看做是应用模型的一种实现方式。
1.2 Stage模型的设计思想
Stage模型是HarmonyOS主推且会长期演进的模型,其设计有一下出发点:
1.2.1 出发点1:为复杂应用设计而生
Stage模型中的多个应用组件是共享同一个ArkTS引擎实例。应用组件之间可以方便共享应用和状态。这样可减少复杂应用运行时对内存的占用。另外,在开发时采用面向对象的开发方式,可以使得复杂应用代码可读性高、易维护性好、可拓展性强。

1.2.2 出发点2:原生支持应用组件级的跨端迁移和多端协同
Stage模型提供的应用组件间通信的rpc调用能力,因此在不同设备的应用组件可以便携地迁移数据和状态。并且,由于UI与UIAbility之间分离,这样便可以利用阿珂UI的声明式特点,通过组件中数据和状态的变化更新用户界面,从而实现跨端迁移和多端协同。

1.2.3 出发点3:支持多设备、多窗口形态
Stage模型在架构层面实现了应用组件管理和窗口管理的解耦,为系统提供了对应用组件进行裁剪以及拓展窗口形态的能力。同时内景模型为应用组件设计了一套生命周期,来适应不同的设备,提供统一的生命周期管理,这样可以减小应用组件在不同设备上的行为差异。

1.2.4 出发点4:为了平衡应用能力和系统管控的成本
stage模型拥有后台应用程序的治理机制,应用程序不能随意的驻留在后台。同时应用后台行为会受到管理,防止一些恶意的应用行为。此外,Stage模型还为卡片服务、输入法服务等提供了特定的应用组件,以满足更多的开发场景。

1.3 工程目录结构
这一部分主要了解一下一个工程包含哪些类型的文件,以及这些文件的作用。
1.3.1 文件类型
在基于Stage模型中的应用项目中,大致有三种文件类型:资源文件、配置文件、ArkTS文件。

(1)ArkTS源码文件
· ets目录
源码文件、Ability类、常量类等都属于ArkTS源码文件,主要存放在模块的ets目录下。

· entryability目录
下放置的事当前模块中定义的Ability组件。如:UIAbility组件就是一种包含UI的应用组件,可以用来与用户交互。

其中,EntryAbility.ets文件是entry模块的入口UIAbility组件。

在EntryAbility.ets文件中,提供了一些生命周期回调供使用。如,我们可用过回调函数onWindowStageCreate函数,指定当前UIAbility组件需要加载的页面。

· pages目录
pages目录主要放置当前模块的页面文件。如,该目录下的Index.ets文件,就是entry模块的入口页面文件。

在Index.ets文件中,我们可以借助ArkUI中的UI组件实现页面的绘制。

(2)配置文件
每个项目的工程目录下必须包含应用配置文件。这些配置文件会向编译工具、操作系统和应用市场提供应用的基本信息。
· app.json5配置文件
在基于Stage模型开发的工程下,都存在一个app.json5的应用级配置文件。

app.json5文件提供了应用的配置信息,如应用的唯一标识、版本号、应用图标、应用名称等信息。

· module.json5配置文件
每一个模块都有一个module.json5的模块级配置文件。

module.json5文件包含模块的基础配置。如,模块名称、模块类型,以及当前模块可以运行在哪一类设备上。另外,文件中还定义了当前模块的应用组件的配置信息。主要包含UIAbility的名称、基本描述、入口代码路径等。并且,这些配置信息只针对当前模块下的UIAblity生效。此外,文件还包括模块的路由表信息。主要定义了跳转模块名称、页面所在模块名称、页面路径等路由配置信息。若程序在运行时需要访问网络、常驻后台等权限,则需要向系统申请权限信息。这对应着文件中的requestPermissions字段。

· 其他配置文件
依赖管理配置文件(oh-package.json5)

其主要定义了名称、版本号、简介、作者,以及代码中依赖的三方库等信息。

(3)资源文件
在开发过程中,字体、颜色、多媒体等资源室经常会用到的。Stage模型中根据资源的路径可以将其分为应用级资源和模块级资源。
应用级资源,可被项目中所有的模块引用,其放置在AppScope目录下的resources目录下;模块级资源,则放置在各模块的resources目录下。

· element目录
该目录主要放置颜色、数字、字符串等一些元素资源

· media目录
该目录主要放置一些图片、音频、视频等多媒体类资源。

· profile目录
该目录主要放置一些自定义的配置文件。如:页面配置、卡片配置等。

注意:DevEco Studio默认会在profile目录下生成一个main_pages配置文件。该文件定义了模块页面的路由集合。
· 中英文目录(zh_CN、en_US)
该目录主要放置模块中所用到的一些中英文资源,应用运行时会根据设备的语言环境进行优先匹配资源。

· rawfile目录
该目录下可以存放各类资源。该部分资源文件会被直接打包进应用,不经过编译,也不会被赋予资源文件ID。

1.4 UIAbility组件概述
1.4.0 本章导读
- 什么是UIAbility?
- UIAbility组件生命周期
- UIAbility组件基本用法
1.4.1 什么是UIAbility?
UIAbility是一种包含用户界面的应用组件,主要用于与用户进行交互。
1.4.2 UIAbility组件生命周期
UIAbility提供了一系列生命周期回调。通过这些回调可以知道当前UIAbility实例的某个状态发生变化,会经过UIability实例的创建和销毁,或者UIAbility实力发声了前后台的状态切换。比如,下面这张图就以图库应用例。
如图左1、左2所示。点击图库应用图标到启动图库应用。应用的状态经过了从创建到前台展示的状态变化。
如图右3、右2、右1所示。现在从图库应用界面直接回到桌面,再从最近任务列表中找到图库应用后,点击使图库应用再次回到前台。应用的状态经过了从后台到前台展示的状态变化。

在UIAbility的使用过程中,会有多种生命周期状态。掌握UIAbility生命周期,对于应用的开发非常重要。UIAbility生命周期包含了Create、Foreground、Background、Destory,四个状态。每一个UIAbility都包含了一个context属性。UIAbility的功能主要是处理应用生命周期。

(1)Create状态
Create状态是应用加载过程中,UIAbility实例创建完成时触发。系统会调用onCreate()回调。可以在该回调中进行应用初始化操作。如,用于后续UI展示所需要的变量定义、资源加载等。

(2)Foreground状态 & Background状态
这两个状态分别在UIAbility实例切换至前台和后台时触发。对于onForeground()和onBackground()回调,onForeground()回调是在UIAbility的UI可见之前,即UIAbility切换至前台是触发。可以在onForeground()回调中申请系统所需要的资源。onBackground()回调在UIAbility的UI完全不可见后,如UIAbility切换至后台时触发,可以在onBackground()回调中释放UI不可见是的无用资源。

(3)Destory状态
当用户从最近任务列表中关闭任务时,可以销毁当前的UIAbility实例,此时会触发Destory状态。如果想进行资源释放或者数据保存,可在onDestory()回调中实现对应的逻辑。
1.4.3 UIAbility组件基本用法
(1)创建工程时默认创建的页面

(2)创建多个页面

(3)指定UIAbility默认启动页面

注意!应用中的UIAbility在启动过程中需要指定默认页面,如果不设置则应用启动后会因为没有默认加载页面而导致白屏。
可以在UIAbility的onWindowStageCreate()生命周期回调中,通过windowStage对象的loadContent()方法设置启动页面。
二、习题整理
2.1 判断题
1. 在基于Stage模型开发的应用项目中都存在一个app.json5配置文件、以及一个或多个module.json5配置文件。
答案:正确
2. 一个应用只可以包含一个UIAbility组件。
答案:错误
3. Background状态在UIAbility实例销毁时触发。可以在onDestroy()回调中进行系统资源的释放、数据的保存等操作。
答案:错误
2.2 单选题
1. 关于module.json5配置文件的标签描述,以下哪个是错误的?
- A. pages标签标识当前Module的配置的应用环境变量
- B. deviceTypes标签标识当前应用可以运行在哪类设备上
- C. abilitis标签标识当前Module中UIAbility的配置信息
- D. requestPermissions标签标识当前应用运行时需要向系统申请的权限集合
答案:A
2. 在UIAbility实例销毁时触发什么状态?
- A. Background
- B. Foreground
- C. Destroy
- D. Create
答案:C
3. UIAbility实例创建完成时触发的回调:
- A. onCreate()
- B. onForeground()
- C. onBackground()
- D. onDestroy()
答案:A
4. 如果需要定义某个Module可以在手机、平板和车机上运行,则修改以下哪个文件?
- A. app.json5
- B. module.json5
- C. oh-package.json5
- D. oh-package-lock.json5
答案:B
2.3 多选题
1. UIAbility的生命周期有哪几个状态?
- A. Create
- B. WindowStageCreate
- C. Foreground
- D. Background
- E. WindowStageDestory
- F. Destroy
答案:ACDF
2. Stage模型提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”,其设计基于哪些出发点:
- A. 为复杂应用而设计
- B. 原生支持应用组件级的跨端迁移和多端协同
- C. 支持多设备和多窗口形态
- D. 平衡应用能力和系统管控成本
答案:ABCD
3. 开发态的应用程序结构包含多种文件类型,以下说法正确的有:
- A. 配置文件,包括应用级配置信息app.json5、以及Module级配置信息module.json5
- B. ArkTS源码文件,主要存放在Module_name > src > main > ets目录下
- C. 资源文件,包括应用级资源文件、以及Module级资源文件,支持图形、多媒体、字符串、布局文件等
- D. 其他配置文件,用于编译构建,包括构建配置文件、编译构建任务脚本、混淆规则文件、依赖的共享包信息等
答案:ABCD
三、心得体会
N/A

412

被折叠的 条评论
为什么被折叠?



