• 鸿蒙系统(HarmonyOS)--第3章:鸿蒙Aility框架


    系列文章目录


    前言

    本章目标
    ❤️掌握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);
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    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.
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    鸿蒙软件开发第03章作业

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

    总结

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

  • 相关阅读:
    win中创建django项目后端测试运行
    Redis分布式锁Redisson
    史上最猛“员工”,疯狂吐槽亿万富翁老板小扎:那么有钱,还总穿着同样的衣服!
    关系代数、SQL语句和Go语言示例
    《自己动手写CPU》学习记录(1)——第1章
    聊天机器人框架Rasa资源整理
    Selenium自动化测试 —— 通过cookie绕过验证码的操作!
    linux控制台命令
    Flow公链 | 通往无需许可的部署之路
    使用 AutoGPTQ 和 transformers 让大语言模型更轻量化
  • 原文地址:https://blog.csdn.net/m0_53142039/article/details/122921943