当前位置: 首页 > backend >正文

期末考试复习总结-《应用程序框架基础》

一、知识点总结

1. 应用程序框架基础
  • 框架概述:连接开发者与用户,提供进程管理、生命周期调度等能力,支持应用内交互、跨设备流转。
  • Stage模型
    • 设计思想:支持跨端迁移、多端协同,UIAbility与UI分离,组件间共享ArkTS引擎实例。
    • 核心特性:组件管理与窗口管理解耦,严格后台管控,支持多设备形态。
  • 工程目录结构
    • ArkTS源码:存于ets目录,包括页面文件(如Index.ets)和Ability组件(如EntryAbility.ets)。
    • 配置文件
      • app.json5:应用全局配置(Bundle名称、版本号)。
      • module.json5:模块配置(设备类型、组件信息、路由表)。
    • 资源文件:分应用级(AppScope/resources)和模块级(module/resources),包含图片、字符串等。
2. 应用程序包基础知识
  • 多Module设计

    • Ability类型:生成HAP包,分为entry(主模块)和feature(动态特性模块)。
    • Library类型:生成HAR(静态)或HSP(动态)共享包,减少代码重复。
    • 在这里插入图片描述
  • 包结构

    • 开发态:包含源码、配置、资源文件。
    • 编译态:ArkTS编译为.abc,资源合并,配置文件整合。
    • 发布态:打包为.app,含签名和pack.info文件。
3. UIAbility组件概述
  • 生命周期
    • 四大状态:Create(onCreate)、Foreground(onForeground)、Background(onBackground)、Destroy(onDestroy)。
    • WindowStage事件onWindowStageCreate(加载页面)、onWindowStageDestroy(释放资源)。
  • 启动模式
    • singleton(单实例,默认)、multiton(多实例)、specified(指定实例,需唯一Key)。
  • 组件交互
    • 设备内启动:通过startAbility传递Want参数。
    • 数据同步:使用EventHub发布订阅事件。
4. 案例:UIAbility与自定义组件生命周期
  • UIAbility生命周期:涵盖Create到Destroy的状态转换。
  • 自定义组件生命周期aboutToAppearonPageShowonPageHide等。

二、思维导图

在这里插入图片描述

三、模拟考试题

1. 单选题(10题×3分=30分)
  1. Stage模型的核心设计思想不包括( )
    A. 跨端迁移
    B. 组件实例共享
    C. UI与逻辑耦合
    D. 多端协同
    答案:C

  2. 应用全局配置文件是( )
    A. module.json5
    B. app.json5
    C. build-profile.json5
    D. oh-package.json5
    答案:B

  3. UIAbility的默认启动模式是( )
    A. multiton
    B. specified
    C. singleton
    D. dynamic
    答案:C

  4. 用于组件间数据同步的是( )
    A. EventHub
    B. AppStorage
    C. LocalStorage
    D. Router
    答案:A

  5. 编译态时,ArkTS源码会生成( )
    A. .abc文件
    B. .hap文件
    C. .app文件
    D. .har文件
    答案:A

  6. 以下属于UIAbility生命周期的是( )
    A. onPageShow
    B. onWindowStageCreate
    C. aboutToAppear
    D. onBackPress
    答案:B

  7. 动态共享包的后缀是( )
    A. .har
    B. .hap
    C. .hsp
    D. .app
    答案:C

  8. 指定实例启动模式需传递( )
    A. 唯一Key
    B. 设备ID
    C. 模块名称
    D. 页面路径
    答案:A

  9. 资源文件中,应用级资源存放于( )
    A. AppScope/resources
    B. module/resources
    C. ets/resources
    D. src/main/resources
    答案:A

  10. 启动UIAbility并获取返回结果的方法是( )
    A. startAbility
    B. startAbilityForResult
    C. terminateSelf
    D. loadContent
    答案:B

2. 判断题(10题×1分=10分)
  1. Stage模型中,UIAbility与UI是分离的。( )
    答案:√

  2. module.json5是应用全局配置文件。( )
    答案:×(是模块配置文件)

  3. UIAbility的onDestroy回调用于释放资源。( )
    答案:√

  4. HAR是动态共享包,HSP是静态共享包。( )
    答案:×(HAR是静态,HSP是动态)

  5. specified启动模式需要传递唯一标识Key。( )
    答案:√

  6. 应用发布态打包为.hap文件。( )
    答案:×(打包为.app

  7. EventHub用于UIAbility与UI的数据同步。( )
    答案:√

  8. multiton启动模式会复用已有实例。( )
    答案:×(每次创建新实例)

  9. 资源文件中,模块级资源优先级高于应用级。( )
    答案:×(应用级优先)

  10. UIAbility冷启动时会重新加载资源。( )
    答案:√

    冷启动的含义:UIAbility的冷启动是指应用或UIAbility从未启动过,或者已经被完全终止,再次启动时所经历的过程。在这种情况下,系统需要为UIAbility分配资源,包括内存、CPU时间等,同时加载应用所需的资源文件,如布局文件、图片、样式等。

方面冷启动热启动
定义应用或UIAbility从未启动过,或者已被完全终止,再次启动的过程。应用或UIAbility已经在后台运行,再次进入前台的过程。
资源加载完全重新加载资源,包括布局文件、图片、样式等。不会重新加载资源,直接使用后台已加载的资源。
性能开销性能开销较大,因为需要重新初始化和加载所有资源。性能开销较小,因为资源已经在后台准备好,直接切换即可。
用户体验用户可能会看到加载界面或白屏,启动时间较长。用户体验更流畅,启动时间较短。
适用场景应用首次安装后启动,或用户手动清除后台任务后再次启动应用。用户将应用最小化后再次切换回应用。
资源状态系统为UIAbility分配资源,加载所有资源文件。使用后台已分配和加载的资源,无需重新加载。
数据保持数据需要重新加载,之前的状态可能会丢失(除非有数据持久化机制)。数据保持在后台,应用状态得以保留。
示例用户关闭应用后重新打开,或者首次安装应用后首次打开。用户在使用其他应用时,将当前应用最小化后再次切换回该应用。
3. 简答题(4题×5分=20分)
  1. 简述Stage模型的核心设计思想。
    参考答案

    • 支持应用组件级跨端迁移和多端协同;
    • 多个组件共享ArkTS引擎实例,减少内存占用;
    • UI与UIAbility分离,通过状态驱动UI更新;
    • 组件管理与窗口管理解耦,支持多设备形态。
  2. 说明UIAbility的四大生命周期状态及对应回调。
    参考答案

    • Create:实例创建时触发onCreate,用于页面初始化;
    • Foreground:切前台时触发onForeground,申请资源;
    • Background:切后台时触发onBackground,释放资源;
    • Destroy:实例销毁时触发onDestroy,释放系统资源。
  3. 比较HAR与HSP共享包的区别。
    参考答案

    • HAR(静态):编译时复用,多包引用会重复拷贝,支持独立发布;
    • HSP(动态):运行时复用,多包共享一份实例,减小包大小,随应用打包。
  4. 简述UIAbility间交互的设备内实现方式。
    参考答案

    • 使用startAbility传递Want参数启动目标组件;
    • 通过startAbilityForResult获取返回结果;
    • 利用EventHub的发布订阅机制实现数据同步;
    • terminateSelf终止当前组件实例。
4. 程序填空题(2题×10分=20分)

题目1:补全UIAbility加载页面的代码。

import { UIAbility } from '@kit.AbilityKit';
import { window } from '@kit.ArkUI';export default class EntryAbility extends UIAbility {onWindowStageCreate(windowStage: window.WindowStage): void {windowStage.loadContent('______', (err) => {  // 补全页面路径if (err) {console.error('加载页面失败');}});}
}

答案pages/Index

题目2:补全EventHub事件订阅代码。

// 在UIAbility中
let eventhub = this.context.eventHub;
eventhub.on('event1', (data: string) => {console.info('接收到事件:' + ______);  // 补全参数
});

答案data

5. 编程题(2题×10分=20分)

题目1:编写代码实现UIAbility的singleton启动模式,并在onNewWant中更新数据。
参考代码

// module.json5中配置
{"abilities": [{"name": "MainAbility","launchType": "singleton"}]
}// MainAbility.ets
export default class MainAbility extends UIAbility {@State data: string = '初始数据';onNewWant(want: Want, launchParam) {if (want.parameters?.newData) {this.data = want.parameters.newData;  // 接收新数据}}
}

评分要点:启动模式配置、onNewWant回调、数据更新逻辑。

题目2:使用EventHub实现UI与UIAbility的数据通信,点击按钮触发事件。
参考代码

// 在UIAbility中
onCreate() {this.context.eventHub.on('updateData', (data) => {console.info('接收到数据:' + data);});
}// 在UI组件中
Button('触发事件').onClick(() => {this.context.eventHub.emit('updateData', '新数据');})

评分要点:事件订阅(on)、事件触发(emit)、参数传递。

http://www.xdnf.cn/news/13286.html

相关文章:

  • 系统网站首页三种常见布局vue+elementui
  • 【Element Plus】Menu组件:url访问页面时高亮对应菜单栏
  • 板凳-------Mysql cookbook学习 (十--4)
  • 小程序动画性能提升指南:CSS硬件加速与JavaScript动画框架对比
  • CentOS下的运维监控Grafana部署
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(三十二) -> 构建系统生命周期
  • okhttp 实现长连接的完整方案
  • OpenLayers 获取地图状态
  • Docker 安装教程(CentOS 系统)纯新手可入门
  • wordpress后台更新后 前端没变化的解决方法
  • Java异步编程之消息队列疑难问题拆解
  • 2506C++,C++的时间库
  • 搭建本地瓦片地图服务器的完整指南
  • 脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
  • SCAU期末笔记 - 数据分析与数据挖掘题库解析
  • 使用 ML.NET Model Builder 训练机器学习模型进行预测性维护
  • 60天python训练计划----day50
  • 连锁超市冷库节能解决方案:如何实现超市降本增效
  • spring中的ImportSelector接口详解
  • 《高等数学》(同济大学·第7版)第四章第一节不定积分的概念与性质
  • 微软PowerBI考试 PL300-在 Power BI 中设计语义模型 【附练习数据】
  • C++11列表初始化:从入门到精通
  • Python学习(8) ----- Python的类与对象
  • 用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章
  • LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》
  • OpenGL-什么是软OpenGL/软渲染/软光栅?
  • 【求出100~500之间所有每位数的乘积大于每位数的和的数。】2022-4-16
  • c语言(持续更新)
  • 第三章支线四 ·事件风暴 · 时序与响应的协奏
  • LangGraph 深度解析:下一代AI应用编排引擎