系列文章目录
文章目录
前言
本章目标
❤️掌握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的构成元素包括Operation
与Parameters
知识点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的不同使用方法,跳转页面后传输数据,放回时携带数据。