03-应用模型介绍

2024-12-12 21:13:15
130次阅读
0个评论

03-应用模型介绍

应用模型是 HarmonyOS 为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必备的组件和运行机制。有了应用模型,开发

者可以基于一套统一的模型进行应用开发,使应用开发更简单、高效。

HarmonyOS 先后提供了两种应用模型:

  • FA(Feature Ability)模型: HarmonyOS API 7 开始支持的模型,已经不再主推。FA 模型开发可见FA 模型开发概述快速入门章节不再对此展开提供开发指导。
  • Stage 模型: HarmonyOS API 9 开始新增的模型,是目前主推且会长期演进的模型。在该模型中,由于提供了 AbilityStage、WindowStage 等类作为应用组件和 Window 窗口的**“舞台”**,因此称这种应用模型为 Stage 模型。Stage 模型开发可见Stage 模型开发概述快速入门以此为例提供开发指导。

Stage 模型基本概念

image-20241206072159964

AbilityStage

每个 Entry 类型或者 Feature 类型的HAP在运行期都有一个 AbilityStage 类实例,当HAP中的代码首次被加载到进程中的时候,系统会先创

建 AbilityStage 实例。

AbilityStage是一个Module级别的组件容器,应用的HAP在首次加载时会创建一个 AbilityStage 实例,可以对该 Module 进行初始化等操作。

AbilityStage 与 Module 一一对应,即一个 Module 拥有一个 AbilityStage。

AbilityStage拥有onCreate()生命周期回调和onAcceptWant()onConfigurationUpdated()onMemoryLevel()事件回调。

  • onCreate()生命周期回调:在开始加载对应 Module 的第一个UIAbility实例之前会先创建 AbilityStage,并在 AbilityStage 创建完成之后

    执行其 onCreate()生命周期回调。AbilityStage 模块提供在 Module 加载的时候,通知开发者,可以在此进行该 Module 的初始化(如

    资源预加载,线程创建等)能力。

  • onAcceptWant()事件回调:UIAbility指定实例模式(specified)启动时候触发的事件回调,具体使用请参见UIAbility 启动模式综述

  • onConfigurationUpdated()事件回调:当系统全局配置发生变更时触发的事件,系统语言、深浅色等,配置项目前均定义在

    Configuration类中。

  • onMemoryLevel()事件回调:当系统调整内存时触发的事件。

应用被切换到后台时,系统会将在后台的应用保留在缓存中。即使应用处于缓存中,也会影响系统整体性能。当系统资源不足时,系统会

通过多种方式从应用中回收内存,必要时会完全停止应用,从而释放内存用于执行关键任务。为了进一步保持系统内存的平衡,避免系统

停止用户的应用进程,可以在 AbilityStage 中的 onMemoryLevel()生命周期回调中订阅系统内存的变化情况,释放不必要的资源。

UIAbility 组件和 ExtensionAbility 组件

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

  • UIAbility 组件是一种包含 UI 的应用组件,主要用于和用户交互。例如,图库类应用可以在 UIAbility 组件中展示图片瀑布流,在用户选

    择某个图片后,在新的页面中展示图片的详细内容。同时用户可以通过返回键返回到瀑布流页面。UIAbility 组件的生命周期只包含创

    建/销毁/前台/后台等状态,与显示相关的状态通过 WindowStage 的事件暴露给开发者。

  • ExtensionAbility 组件是一种面向特定场景的应用组件。开发者并不直接从 ExtensionAbility 组件派生,而是需要使用 ExtensionAbility

    组件的派生类。目前 ExtensionAbility 组件有用于卡片场景的 FormExtensionAbility,用于输入法场景的 InputMethodExtensionAbility,用于闲时任务场景的 WorkSchedulerExtensionAbility 等多种派生类,这些派生类都是基于特定场景

    提供的。例如,用户在桌面创建应用的卡片,需要应用开发者从 FormExtensionAbility 派生,实现其中的回调函数,并在配置文件中

    配置该能力。ExtensionAbility 组件的派生类实例由用户触发创建,并由系统管理生命周期。在 Stage 模型上,三方应用开发者不能开

    发自定义服务,而需要根据自身的业务场景通过 ExtensionAbility 组件的派生类来实现。

WindowStage

每个 UIAbility 实例都会与一个 WindowStage 类实例绑定,该类起到了应用进程内窗口管理器的作用。它包含一个主窗口。也就是说

UIAbility 实例通过 WindowStage 持有了一个主窗口,该主窗口为 ArkUI 提供了绘制区域。

Context

在 Stage 模型上,Context 及其派生类向开发者提供在运行期可以调用的各种资源和能力。UIAbility 组件和各种 ExtensionAbility 组件的派

生类都有各自不同的 Context 类,他们都继承自基类 Context,但是各自又根据所属组件,提供不同的能力。

收藏00

登录 后评论。没有帐号? 注册 一个。