系列文章目录


前言

本章目标
❤️掌握Ability的分类;
❤️掌握Ability配置方法; .
❤️理解并掌握Page Ability生命周期
❤️掌握Intent的不同使用方法。

第1节: Ability概述

😗:知识点1: Ability概述
❌知识点2: Ability配置

知识点1: 【Ability概述】

Ability框架介绍:
1️⃣Ability是应用所具备能力的抽象, 也是应用程序的重要组成部分。
2️⃣一个应用可以具备多种能力(即可以包含多个Ability) ,
3️⃣HarmonyOS支 持应用以Ability为单位进行部署。
4️⃣Ability可以分为FA (Feature Ability)和PA (Particle Ability)两种类型,每种类型为开发者提供了不同的模板,以便实现不同的业务功能
➢FA支持Page Ability: .
Page模板是FA唯- - 支持的模板,用于提供与用户交互的能力。一个Page实例可以包含-组相关页面,每个页面用一个AbilitySlice实例表示。
➢PA支 持Service Ability和Data Ability:
●Service模板: 用于提供后台运行任务的能力。
●Data模板: 用于对外部提供统一 的数据访问抽象。

知识点2: 【Ability配置】

在配置文件(config.json) 中注册Ability时, 可以通过配置Ability元素中的"type" 属性来指定
Ability模板类型: .

➢"page” :代表Page模板
➢"service":代表Service模板
➢’data’:代表Data模板

在这里插入图片描述

第2节: Page Ability

😗:知识点1: Page Ability基本概念
⭕️知识点2: Page Ability生命周期回调

知识点1: 【Page Ability基本概念】

Page与AbilitySlice:
1️⃣Page模板 (以下简称"Page" )是FA唯一-支持的模板, 用于提供与
用户交互的能力。
2️⃣- -个Page可以由一个或多个AbilitySlice构成,
3️⃣AbilitySlice是指应用的单个页面及其控制逻辑的总和
4️⃣当一个Page由多 个AbilitySlice共同构成时,这些AbilitySlice页面提
供的业务能力应具有高度相关性。例如,新闻浏览功能可以通过一个
⭕️Page来实现,其中包含了两个AbilitySlice:
一个AbilitySlice用于展示新闻列表,另一个AbilitySlice用于展示新闻详情

知识点2 【Page Ability生命周期回调】

❌Page生命周期的不同状态转换及 其对应的回调
在这里插入图片描述
❤️在MainAility添加以上蓝色底的回调方法
在这里插入图片描述

第3节:PA概述

❌知识点1: Service Ability
❌知识点2: Data Ability

知识点1 【Service Ability】

1️⃣基于Service模板的Ability(以下简称“Service” )
2️⃣主要用于后台运行任务(如执行音乐播放、文件下载等),但不提供用户交互界面
3️⃣Service可由其他应用或Ability启动,即使用户切换到其他应用,Service仍将在后台继续运行:
4️⃣Service是单实例的。在一个设备上,相同的Service只会存在一个实例
5️⃣如果多个Ability共用这个实例,只有当与Service绑定的所有Ability都退出后,Service才能够退出。
6️⃣由于Service是在主线程里执行的,因此,如果在Service里面的操作时间过长,开发者必须在Service里创建新的线程来处理(详见线程间通信),防止造成主线程阻塞,应用程序无响应。
⭕️官方文档:

知识点2【Data Ability】

1️⃣使用Data模板的Ability (以下简称“Data”)
2️⃣有助于应用管理其自身和其他应用存储数据的访问,并提供与其他应用共享数据的方法。
3️⃣Data既可用于同设备不同应用的数据共享,也支持跨设备不同应用的数据共享。
4️⃣数据的存放形式多样,可以是数据库,也可以是磁盘上的文件。
5️⃣Data对外提供对数据的增、删、改、查,以及打开文件等接口,这些接口的具体实现由开发者提供。
⭕️官方文档:

第4节:信息载体lntent

❌知识点1:基本概念
❌知识点2:应用

知识点1:基本概念

Intent是对象之间传递信息的载体。例如,当一个Ability需要启动另一个Ability时,或者一个AbilitySlice需要导航到另一个AbilitySlice时,可以通过Intent指定启动的目标同时携带相关数据。Intent的构成元素包括OperationParameters

在这里插入图片描述

知识点2:应用

1️⃣根据Ability的全称启动应用

Intent intent = new Intent(;
//通过Intent中的OperationBuilder类构造operation对象,指定设备标识(空串表示当前设备)、应用包名、Ability名称
Operation operation = new Intent.OperationBuilder(
.withDeviceld("")
.withBundleName("com.demoapp")
.withAbilityName("com.demoapp.FooAbility").build();
//把operation设置到intent中
intent.setOperation(operation);
intent.setParam("key" ,"value");
startAbility(intent);

2️⃣带返回值启动应用


private void queryWeathero(
intent intent = new Intent():
Operation operation = new IlntentOperationBuilder()
	.withAction(IntentACTION_QUERY_WEATHER).builder();
	intent.setOperation(operation);
	startAbilityForResult(intent.REQ_CODE_QUERY_WEATHER);
}
@Override
protected void onAbilityResult(int requestCode, int resultCode, Intent resultData)(switch (requestCode){
case REQ_CODE_QUERY_WEATHER:
Do something with result.
}
}

鸿蒙软件开发第03章作业

1、实现物流查询系统的查询与结果UI
2、实现订单号的传递功能
3、实现右图功能

总结

本章掌握了Ability的分类;Ability配置方法; .理解并掌握Page Ability生命周期以及掌握Intent的不同使用方法,跳转页面后传输数据,放回时携带数据。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐