首页 > 编程语言 >【鸿蒙学习】HarmonyOS应用开发者基础 - 应用程序框架基础

【鸿蒙学习】HarmonyOS应用开发者基础 - 应用程序框架基础

时间:2024-08-12 23:52:09浏览次数:14  
标签:鸿蒙 UIAbility HAP Module HarmonyOS 实例 开发者 应用 组件

Stage模型提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”,其设计基于哪些出发点:

从第一节的学习到现在,学习的人数越来越少,要相信,坚持学习下去的将会获得相应的收获。加油少年!!!

一、应用框架基础

1.应用

  用户应用程序泛指运行在设备的操作系统之上,为用户提供特定服务的程序,简称“应用”。一个应用所对应的软件包文件,称为 “应用程序包”

2.Module类型

  模块(‌Module)‌在计算机科学和软件工程中,‌通常指的是程序中的一个独立部分,‌它执行特定的功能并且可以被单独编译和测试。‌模块可以是代码的任何部分,‌如函数、‌类、‌对象或者更复杂的程序单元,‌它们被设计用来增加软件的可重用性、‌可维护性和可读性。‌模块的设计和实现遵循高内聚低耦合的原则,‌即模块内部的功能应该高度相关且紧密结合,‌而模块之间的依赖关系则应该尽可能地松散。‌
  总的来说,‌模块是软件开发中的一个重要概念,‌它帮助开发人员更好地组织和管理代码,‌提高软件的可维护性和可扩展性。‌
  Module按照使用场景可以分为两种类型:

  • Ability类型的Module: 用于实现应用的功能和特性。每一个Ability类型的Module编译后,会生成一个以.hap为后缀的文件,我们称其为HAP(Harmony Ability Package)包。HAP包可以独立安装和运行,是应用安装的基本单位,一个应用中可以包含一个或多个HAP包,具体包含如下两种类型。
    • entry类型的Module:应用的主模块,包含应用的入口界面、入口图标和主功能特性,编译后生成entry类型的HAP。每一个应用分发到同一类型的设备上的应用程序包,只能包含唯一一个entry类型的HAP。
    • feature类型的Module: 应用的动态特性模块,编译后生成feature类型的HAP。一个应用中可以包含一个或多个feature类型的HAP,也可以不包含。
  • Library类型的Module: 用于实现代码和资源的共享。同一个Library类型的Module可以被其他的Module多次引用,合理地使用该类型的Module,能够降低开发和维护成本。Library类型的Module分为Static和Shared两种类型,编译后会生成共享包。
    • Static Library: 静态共享库。编译后会生成一个以.har为后缀的文件,即静态共享包HAR(Harmony Archive)。
    • Shared Library:动态共享库。编译后会生成一个以.hsp为后缀的文件,即动态共享包HSP(Harmony Shared Package)。

说明
实际上,Shared Library编译后除了会生成一个.hsp文件,还会生成一个.har文件。这个.har文件中包含了HSP对外导出的接口,应用中的其他模块需要通过.har文件来引用HSP的功能。为了表述方便,我们通常认为Shared Library编译后生成HSP。

二、Stage应用模型设计思想

1. 概述

Stage模型是HarmonyOS NEXT版本主推且会长期演进的模型。该模型提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”,因此称这种应用模型为Stage模型。
Stage模型中,多个应用组件共享同一个ArkTS引擎实例,在Stage模型中,应用组件之间可以方便的共享对象和状态,同时减少复杂应用运行对内存的占用。Stage模型作为主推的应用模型,开发者通过它能够更加便利地开发出分布式场景下的复杂应用。

2. 基本概念

在这里插入图片描述
Stage模型提供UIAbility和ExtensionAbility两种类型的组件,这两种组件都有具体的类承载,支持面向对象的开发方式。

UIAbility组件

UIAbility组件是一种包含UI的应用组件,主要用于和用户交互。例如,图库类应用可以在UIAbility组件中展示图片瀑布流,在用户选择某个图片后,在新的页面中展示图片的详细内容。同时用户可以通过返回键返回到瀑布流页面。UIAbility的生命周期只包含创建/销毁/前台/后台等状态,与显示相关的状态通过WindowStage的事件暴露给开发者。

ExtensionAbility组件

ExtensionAbility组件是一种面向特定场景的应用组件。开发者并不直接从ExtensionAbility派生,而是需要使用ExtensionAbility的派生类。目前ExtensionAbility有用于卡片场景的FormExtensionAbility,用于输入法场景的InputMethodExtensionAbility,用于闲时任务场景的WorkSchedulerExtensionAbility等多种派生类,这些派生类都是基于特定场景提供的。例如,用户在桌面创建应用的卡片,需要应用开发者从FormExtensionAbility派生,实现其中的回调函数,并在配置文件中配置该能力。ExtensionAbility派生类实例由用户触发创建,并由系统管理生命周期。在Stage模型上,普通应用开发者不能开发自定义服务,而需要根据自身的业务场景通过ExtensionAbility的派生类来实现。

WindowStage

WindowStage:每个UIAbility类实例都会与一个WindowStage类实例绑定,该类提供了应用进程内窗口管理器的作用。它包含一个主窗口。也就是说UIAbility通过WindowStage持有了一个主窗口,该主窗口为ArkUI提供了绘制区域。

Context

Context:在Stage模型上,Context及其派生类向开发者提供在运行期可以调用的各种资源和能力。UIAbility组件和各种ExtensionAbility派生类都有各自不同的Context类,他们都继承自基类Context,但是各自又根据所属组件,提供不同的能力。

AbilityStage

AbilityStage:每个Entry类型或者Feature类型的HAP在运行期都有一个AbilityStage类实例,当HAP中的代码首次被加载到进程中的时候,系统会先创建AbilityStage实例。每个在该HAP中定义的UIAbility类,在实例化后都会与该实例产生关联。开发者可以使用AbilityStage获取该HAP中UIAbility实例的运行时信息。

三、UIAbility组件

1. 概述

UIAbility组件是一种包含UI的应用组件,主要用于和用户交互。

UIAbility的设计理念:

  • 原生支持应用组件级的跨端迁移和多端协同。

  • 支持多设备和多窗口形态。

UIAbility划分原则与建议:

  • UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口。一个应用可以包含一个或多个UIAbility组件。例如,在支付应用中,可以将入口功能和收付款功能分别配置为独立的UIAbility。

  • 每一个UIAbility组件实例都会在最近任务列表中显示一个对应的任务。

对于开发者而言,可以根据具体场景选择单个还是多个UIAbility,划分建议如下:

  • 如果开发者希望在任务视图中看到一个任务,则建议使用一个UIAbility,多个页面的方式。

  • 如果开发者希望在任务视图中看到多个任务,或者需要同时开启多个窗口,则建议使用多个UIAbility开发不同的模块功能。

2. 声明配置

为使应用能够正常使用UIAbility,需要在module.json5配置文件的abilities标签中声明UIAbility的名称、入口、标签等相关信息。

{
  "module": {
    ...
    "abilities": [
      {
        "name": "EntryAbility", // UIAbility组件的名称
        "srcEntry": "./ets/entryability/EntryAbility.ets", // UIAbility组件的代码路径
        "description": "$string:EntryAbility_desc", // UIAbility组件的描述信息
        "icon": "$media:icon", // UIAbility组件的图标
        "label": "$string:EntryAbility_label", // UIAbility组件的标签
        "startWindowIcon": "$media:icon", // UIAbility组件启动页面图标资源文件的索引
        "startWindowBackground": "$color:start_window_background", // UIAbility组件启动页面背景颜色资源文件的索引
        ...
      }
    ]
  }
}

3. 生命周期

在这里插入图片描述
当用户打开、切换和返回到对应应用时,应用中的UIAbility实例会在其生命周期的不同状态之间转换。UIAbility类提供了一系列回调,通过这些回调可以知道当前UIAbility实例的某个状态发生改变,会经过UIAbility实例的创建和销毁,或者UIAbility实例发生了前后台的状态切换。
UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态。

希望大家多多关注+点赞+收藏

标签:鸿蒙,UIAbility,HAP,Module,HarmonyOS,实例,开发者,应用,组件
From: https://blog.csdn.net/qq_15062089/article/details/141144880

相关文章

  • HarmonyOS NEXT 学习笔记6--prop装饰器-单向传递
    1.代码:@Entry@ComponentstructComponentQuestionCase{@Statemoney:number=999999;build(){Column(){Text('father:'+this.money)Button('存100块').onClick(()=>{this.money+=100})......
  • APP安全评估:开发者的上架通行证
    在应用商城的浩瀚海洋中,每个APP都像一艘航船,而安全评估报告就是你的航海图和通行证。没有它,你的APP可能会在上架的风暴中迷失方向。今天,让我们一起绘制这张至关重要的航海图,确保你的APP能够安全地抵达目的地。一、安全评估报告:APP上架的必备文件一份详尽的安全评估报告不仅......
  • 鸿蒙-JS-第二周day01
    数组1什么是数组1)数组是值的有序集合。2)每个值叫做一个元素。3)每个元素在数组中有一个位置,以数字表示,称为索引(有时也称为下标)。4)数组的元素可以是任何类型。5)数组索引从0开始,数组最大能容纳4294967295个元素。2创建数组2.1使用数组直接量//......
  • 科大讯飞智文 2.0 版本发布;人工智能模型 Grok 2 测试版即将发布丨 RTE 开发者日报
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • ClueCon 2024:音视频开发者的技术盛会
       前面的话:ClueCon是音视频开发者的年度技术盛会,每年都在美国芝加哥举行。RTE开发者社区的联合主理人杜金房在即将踏上ClueCon之际,写下了这段文字。也邀请大家一同关注这次大会。 时间过得真快,转眼,又是一届新的ClueCon了。 ClueCon是一个音视频开发者的年度......
  • 鸿蒙开发Core Speech Kit(基础语音服务)
    CoreSpeechKit是鸿蒙操作系统(HarmonyOS)提供的一个强大的开发工具包,主要用于语音识别、语音合成等语音相关的功能开发。这个工具包为开发者提供了多种语音处理能力,可以用来开发语音助手、智能家居、车载系统等需要语音交互的应用。以下是CoreSpeechKit的一些主要功......
  • HarmonyOS Developer之手势事件
    概述手势表示由单个或多个事件识别的语义动作(例如:点击、拖动和长按)。一个完整的手势也可能由多个事件组成,对应手势的生命周期。支持的事件有:触摸touchstart:手指触摸动作开始。touchmove:手指触摸后移动。touchcancel:手指触摸动作被打断,如来电提醒、弹窗。touchend:手指......
  • 开发者福音!ChatGPT 输出现支持预定义!
    ChatGPT输出可以更加可控了,OpenAI昨天发布了一款工具,该工具将以用户指定的精确格式返回查询结果。OpenAI首席执行官SamAltman表示,这是使用AI技术的开发人员提出最多的请求。1.OpenAI今年的重点:DevTools自2022年11月首次亮相以来,ChatGPT服务已被无数应用程序开......
  • 仅12%程序员担心被AI取代 62%开发者在使用AI工具
    **根据StackOverflow近日发布的2024年开发者调查报告,只有12%的开发者认为AI威胁到了他们当前的工作,而高达70%的受访者已经将AI工具整合到了自己的工作流程中。**该调查共有超过6.5万名开发者参与,结果显示,使用AI工具的开发者比例从2023年的44%显著提升至2024年的62%。其中......
  • 苹果新规引发开发者声讨:科技巨头与欧盟《数字市场法》的较量
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点苹果新规引发开发者声讨:科技巨头与欧盟《数字市场法》的较量在科技巨头与监管机构的较量中,苹果公司的最新举措再次成为焦点。面对欧盟《数字市场法》(DMA)的压力,苹果......