鸿蒙开发笔记-13-AbilityStage组件容器

以下内容均基于HarmonyOS NEXT版本

  • HarmonyOS Stage模型采用分层设计思想,形成Application Framework -> AbilityStage -> UIAbility -> Component 的四层架构体系。其中:
    • AbilityStage:管理HAP模块的生命周期和资源分配
    • UIAbility:负责界面交互,支持跨设备数据迁移和远程调用
    • Component:提供基础UI组件能力
  • AbilityStage是一个Module级别的组件容器,应用的HAP在首次加载时会创建一个AbilityStage实例,可以对该Module进行初始化等操作。
  • AbilityStage与Module一一对应,即一个Module拥有一个AbilityStage。

AbilityStage开发流程

  • DevEco Studio默认工程中未自动生成AbilityStage,如需要使用AbilityStage的能力,可以手动新建一个AbilityStage文件:
  1. 在工程Module对应的ets目录下,右键选择"New > Directory",新建一个目录并命名为myabilitystage。
  2. 在myabilitystage目录,右键选择"New > ArkTS File",新建一个文件并命名为MyAbilityStage.ts。
  3. 打开MyAbilityStage.ts文件,导入AbilityStage的依赖包,自定义类继承AbilityStage并加上需要的生命周期回调,示例中增加了一个onCreate()生命周期回调。
typescript 复制代码
// MyAbilityStage.ets
import { AbilityStage, Want } from '@kit.AbilityKit';

export default class MyAbilityStage extends AbilityStage {
  private static readonly TAG: string = 'MyAbilityStage';

  // 模块首次加载时触发
  onCreate(): void {
    console.log(`${MyAbilityStage.TAG} onCreate`);
    // 初始化模块级资源
    this.initModuleResources();
  }

  // 指定模式下的Ability启动拦截
  onAcceptWant(want: Want): string {
    console.log(`${MyAbilityStage.TAG} onAcceptWant ${JSON.stringify(want)}`);
    return 'MyAbilityStage';
  }
  
   onConfigurationUpdated(config: Configuration) {
    log.info("系统配置变更:", JSON.stringify(config));
    this.adjustUILocale(config.locale);
  }
  
  onMemoryLevel(level: number) {
    if (level < this.memoryLevel) {
      this.releaseCache();
    }
    this.memoryLevel = level;
    switch(level) {
      case 0: // NORMAL
        this.cacheMap.clear();
        break;
      case 2: // COMPLETE
        this.cacheMap.clear();
        break;
    }
  }
  
   // 模块销毁前清理
  onDestroy(): void {
    this.releaseResources();
  }

  private initModuleResources(): void {
    // 预加载公共资源
    // 初始化全局对象
    // 创建后台线程
  }
}
  1. 在module.json5配置文件中,通过配置 srcEntry 参数来指定模块对应的代码路径,以作为HAP加载的入口。
json 复制代码
// module.json5
{
  "module": {
    "name": "entry",
    "type": "entry",
    "srcEntry": "./ets/myabilitystage/MyAbilityStage.ets",
    "abilities": [
      {
        "name": "MainAbility",
        "srcEntry": "./ets/mainability/MainAbility.ets",
        "launchType": "standard"
      }
    ]
  }
}
AbilityStage生命周期
  1. onCreate():在开始加载对应Module的第一个UIAbility实例之前会先创建AbilityStage,并在AbilityStage创建完成之后执行其onCreate()生命周期回调;
  2. onAcceptWant():UIAbility指定实例模式(specified)启动时候触发的事件回调;
  3. onConfigurationUpdated():当系统全局配置发生变更时触发的事件;
  4. onMemoryLevel():当系统调整内存时触发的事件;
  5. onDestroy(): 模块销毁前回收资源;

我是今阳,如果想要进阶和了解更多的干货,欢迎关注微信公众号 "今阳说" 接收我的最新文章

相关推荐
Storm-Shadow4 小时前
Android OpenGLES视频剪辑示例源码
android·opengles·视频滤镜
双桥wow4 小时前
android 堆栈打印
android
爱学习的大牛1239 小时前
使用C++开发Android .so库的优势与实践指南
android·.so·1024程序员节
摘星编程10 小时前
【成长纪实】HarmonyOS Next学习地图:新手避坑指南与核心知识点拆解
学习·华为·harmonyos·鸿蒙开发
文火冰糖的硅基工坊11 小时前
[人工智能-大模型-85]:大模型应用层 - AI/AR眼镜:华为智能眼镜、苹果智能眼镜、Google Glass智能眼镜的软硬件技术架构
人工智能·华为·ar
帅锅锅00711 小时前
SeLinux Type(类型)深度解析
android·操作系统
2501_9159214311 小时前
iOS混淆与IPA加固全流程(iOS混淆 IPA加固 Ipa Guard实战)
android·ios·小程序·https·uni-app·iphone·webview
游戏开发爱好者812 小时前
iOS 26 App 开发阶段性能优化 从多工具协作到数据驱动的实战体系
android·ios·小程序·uni-app·iphone·webview·1024程序员节
2501_9151063212 小时前
深入剖析 iOS 26 系统流畅度,多工具协同监控与性能优化实践
android·ios·性能优化·小程序·uni-app·cocoa·iphone