应用程序框架基础
第四课 应用程序框架基础
在上一课结束后,补足了声明式UI部分的知识之后,依旧是先看习题。
判断题
- 在基于Stage模型开发的应用项目中都存在一个app.json5配置文件、以及一个或多个module.json5配置文件。
- 正确(True)
- 错误(False)
首先问题中提到了Stage模型,什么是Stage模型暂不清楚,带着这个疑问继续看问题,应用中存在一个app.json5文件,应用的英文为application,或者用app简写,前部分应该没有问题,后部分结合第一课提到的设计理念,可能与微服务相似,可以尝试用较为熟悉的多模块带入,例如Spring Cloud多模块其中在maven中的配置也是使用module标签,应该也没有问题,正确!拿下!
- 一个应用只可以包含一个UIAbility组件。
- 正确(True)
- 错误(False)
什么是UIAbility暂不清楚,但是一个应用中只能包含的应该是Application之类的东西,与Alibility不沾边,选择错误,拿下!
- Background状态在UIAbility实例销毁时触发。可以在onDestroy()回调中进行系统资源的释放、数据的保存等操作。
- 正确(True)
- 错误(False)
Background状态看字面意思应该是后台状态,销毁状态应该是destroy状态,选择错误,拿下!后部分看起来倒是没有问题。
单选题
- 关于module.json5配置文件的标签描述,以下哪个是错误的?
- A. pages标签标识当前Module的配置的应用环境变量
- B. deviceTypes标签标识当前设备可以运行在哪类设备上
- C. abilitis标签标识当前Module中UIAbility的配置信息
- D. requestPermissions标签标识当前应用运行时需要向系统申请的权限集合
首选A,pages标签代入uniapp的配置,很明显应该是页面的配置,而不是关于环境变量,环境变量应该是env相关的;B直译就是设备类型,没有问题;C看起来也很合理;D中和微信小程序的标签相同,也没问题,选A,拿下!
- 在UIAbility实例销毁时触发什么状态?
- A. Background
- B. Foreground
- C. Destroy
- D. Create
直译选C,没啥好说的。
- UIAbility实例创建完成时触发的回调:
- A. onCreate()
- B. onForeground()
- C. onBackground()
- D. onDestroy()
直译选D,没啥好说的。
- 如果需要定义某个Module可以在手机、平板和机车上运行,则修改以下哪个文件?
- A. app.json5
- B. module.json5
- C. oh-package.json5
- D. oh-package-lock.json5
按照单选1提到的,deviceTypes应该是在module的配置中,选B,拿下!并且CD带入npm导包的文件目录来说,更有可能是第三方包的内容。
多选题
- UIAbility的生命周期有哪几个状态?
- A. Create
- B. WindowStageCreate
- C. Foreground
- D. Background
- E. WindowStageDestory
- F. Destroy
首先生命周期基本都是包含有创建销毁的,并且按照单选提到的部分,后台也是一种生命周期,那么与后台对应的,前台很有可能也是一种生命周期,而BE按照字面理解是描述窗口Stage的创建销毁,暂不了解Stage模型与UIAbility的关系,暂时不选,选择ACDF,拿下!
- Stage模型提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”,其设计基于哪些出发点:
- A. 为复杂应用而设计
- B. 原生支持应用组件级的跨端迁移和多端协同
- C. 支持多设备和多窗口形态
- D. 平衡应用能力和系统管控成本
按照题干描述的内容来说,前部分必定是正确描述,那么UIAbllity与WindowStage应该是相互协助的两部分,而不是UIAbility整体的部分。所以上题BE排除。再看选项,基本都是第一课中提到的理念,这些组件基于这些理念出发,全选,拿下!
- 开发态的应用程序结构包含多种文件类型,以下说法正确的有:
- A. 配置文件,包括应用级配置信息app.json5、以及Module级配置信息module.json5
- B. ArkTS源码文件,主要存放在Module_name > src > main > ets目录下
- C. 资源文件,包括应用级资源文件、以及Module级资源文件,支持图形、多媒体、字符串、布局文件等
- D. 其他配置文件,用于编译构建,包括构建配置文件、编译构建任务脚本、混淆规则文件、依赖的共享包信息等
A选型前文已经提到过,正确;B选项看过HelloWorld程序结果,也是正确的;C选项类比Vue与Spring Boot项目,也是正常的设计,正确;D选项类比Vue,也是正常的设计,全选!拿下!
回顾
再次裸考满分拿下,在第四课的习题中,提出了两个之前没有看到过的内容,Stage、UIAbility,并且在其他内容中也通过大量相关的问题可以看出,这两部分可能就是应用开发的核心内容,重要程度可能类似于Vue中的组件概念,或者Spring 全家桶中的Spring容器,应该仔细研究。
重点记录
以下记录个人认为是核心的内容:
- Stage模型提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”,其出发点在于:为复杂应用而设计、原生支持应用组件级的跨端迁移和多端协同、支持多设备和多窗口形态、平衡应用能力和系统管控成本。在Stage模型中,多个应用组件共享同一个ArkTS引擎实例,这使得组件之间可以方便地共享对象和状态,同时减少了内存占用。这可以用虚拟机和docker类比,传统应用就像虚拟机独占一部分系统资源一样,独占一个渲染引擎;Stage模型构建的应用则像docker容器共用内核资源,共享一个渲染引擎。
- UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口。一个应用可以包含一个或多个UIAbility组件。例如,在支付应用中,可以将入口功能和收付款功能分别配置为独立的UIAbility。每一个UIAbility组件实例都会在最近任务列表中显示一个对应的任务。
- UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态,而两个WindowStage状态则是UIAbility创建销毁窗口的一个阶段,对应于从创建到进入前台页面和销毁前的两个阶段,可以设置UI资源的加载与释放,与游戏开发中的加载或释放UI资源类似。