鸿蒙NEXT开发:Stage模型能力的接口-@ohos.app.ability.UIAbility (UIAbility)

 往期鸿蒙5.0全套实战文章必看:(文中附带全栈鸿蒙5.0学习资料)


@ohos.app.ability.UIAbility (UIAbility)

UIAbility是包含UI界面的应用组件,继承自Ability,提供组件创建、销毁、前后台切换等生命周期回调,同时也具备组件协同的能力,组件协同主要提供如下常用功能:

  • Caller:由startAbilityByCall接口返回,CallerAbility(调用者)可使用Caller与CalleeAbility(被调用者)进行通信。
  • Callee:UIAbility的内部对象,CalleeAbility(被调用者)可以通过Callee与Caller进行通信。

说明

本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

本模块接口仅可在Stage模型下使用。

导入模块

import { UIAbility } from '@kit.AbilityKit';

属性

系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

名称 类型 只读 可选 说明
context UIAbilityContext

上下文。

元服务API:从API version 11开始,该接口支持在元服务中使用。

launchWant Want

UIAbility启动时的参数。

元服务API:从API version 11开始,该接口支持在元服务中使用。

lastRequestWant Want

UIAbility最后请求时的参数。

元服务API:从API version 11开始,该接口支持在元服务中使用。

callee Callee 调用Stub(桩)服务对象。

UIAbility.onCreate

onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void

UIAbility实例处于完全关闭状态下被创建完成后进入该生命周期回调,执行初始化业务逻辑操作。即UIAbility实例冷启动时进入该生命周期回调。同步接口,不支持异步回调。

元服务API:从API version 11开始,该接口支持在元服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

参数:

参数名 类型 必填 说明
want Want 当前UIAbility的Want类型信息,包括ability名称、bundle名称等。
launchParam AbilityConstant.LaunchParam 创建 ability、上次异常退出的原因信息。

示例:

import { UIAbility, AbilityConstant, Want } from '@kit.AbilityKit';

class MyUIAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
    console.log(`onCreate, want: ${want.abilityName}`);
  }
}

UIAbility.onWindowStageCreate

onWindowStageCreate(windowStage: window.WindowStage): void

当WindowStage创建后调用。

元服务API:从API version 11开始,该接口支持在元服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

参数:

参数名 类型 必填 说明
windowStage window.WindowStage WindowStage相关信息。

示例:

import { UIAbility } from '@kit.AbilityKit';
import { window } from '@kit.ArkUI';

class MyUIAbility extends UIAbility {
onWindowStageCreate(windowStage: window.WindowStage) {
console.log('onWindowStageCreate');
}
}

UIAbility.onWindowStageWillDestroy12+

onWindowStageWillDestroy(windowStage: window.WindowStage): void

当WindowStage即将销毁时调用。

元服务API:从API version 12开始,该接口支持在元服务中使用。

系统能力

<think> 我们遇到了在DevEco Studio中使用仓颉构建todolist项目时,执行hvigor命令报错:Module-srcEntry 'ohos_app_cangjie_entry.MyAbilityStage' not found的问题。 根据错误信息,问题在于找不到名为`MyAbilityStage`的入口类。在Stage模型的应用中,我们需要配置AbilityStage,但错误提示的模块名称为“ohos_app_cangjie_entry”,这可能是由于项目配置不正确导致的。 解决步骤如下: 1. **检查`module.json5`配置** 打开`entry/src/main/module.json5`,确认`srcEntry`配置是否正确。在Stage模型中,AbilityStage的路径应该配置在`srcEntry`字段中。通常,该配置应该指向自定义的AbilityStage类(如果没有自定义,可以移除该配置,系统会使用默认的AbilityStage)。 例如,如果你没有自定义AbilityStage,可以移除`srcEntry`字段,或者将其配置为当前存在的AbilityStage类。假设你的AbilityStage类名为`MyAbilityStage`,并且位于`entry/src/main/cangjie/application/MyAbilityStage.ets`,则配置应为: ```json { "module": { "name": "entry", "type": "entry", "srcEntry": "./cangjie/application/MyAbilityStage.ets", // ... 其他配置 } } ``` 2. **确认AbilityStage文件是否存在** 在项目中检查`MyAbilityStage.ets`文件是否存在。如果不存在,你需要创建它,或者修改`module.json5`中的`srcEntry`指向正确的AbilityStage文件。 创建一个简单的AbilityStage: ```typescript import AbilityStage from '@ohos.app.ability.AbilityStage' export default class MyAbilityStage extends AbilityStage { onCreate() { // 应用初始化时调用 } } ``` 3. **检查仓颉插件版本** 根据引用[1],仓颉插件提供了HarmonyOS NEXT应用开发能力。请确保你使用的DevEco Studio版本与仓颉插件版本兼容。可以在`.hvigor`文件夹下检查`cangjie-build-support`的版本是否正确。 4. **清理并重新构建** 有时候,构建缓存可能导致问题。尝试清理项目并重新构建: - 删除项目根目录下的`build`、`entry/build`等构建输出文件夹 - 在DevEco Studio中执行菜单:Build -> Clean Project - 重新运行`hvigor`命令 5. **检查`oh-package.json5`依赖** 确保仓颉相关的依赖已经正确配置。例如,在`entry/oh-package.json5`中应该有: ```json { "name": "entry", "version": "1.0.0", "dependencies": { // 确保有@ohos/hvigor和仓颉插件相关的依赖 } } ``` 6. **检查项目结构** 确保项目结构符合要求,特别是`entry/src/main/cangjie`目录下应有`application`目录,并且`MyAbilityStage.ets`位于其中。 如果上述步骤仍不能解决问题,请尝试以下备选方案: - **方案一**:在`build-profile.json5`中明确指定编译类型为仓颉(如果项目同时支持JS和仓颉,可能需要指定): ```json "buildOption": { "cangjie": true } ``` - **方案二**:如果不需要自定义AbilityStage,可以尝试移除`module.json5`中的`srcEntry`配置。 通过以上步骤,应该能够解决Module-srcEntry找不到的问题。 §§相关问题§§ 1. 在仓颉项目中如何自定义AbilityStage? 2. HarmonyOS Stage模型AbilityStage的作用是什么? 3. 如何更新DevEco Studio中的仓颉插件? </think> 在 DevEco Studio 中使用仓颉构建 TodoList 项目时遇到 `Module-srcEntry 'ohos_app_cangjie_entry.MyAbilityStage' not found` 错误,这通常是项目配置问题导致的。以下是详细的解决方法: ### 解决方案步骤 #### 1. **检查 `module.json5` 配置 打开 `entry/src/main/module.json5` 文件,确认 `srcEntry` 配置是否正确: ```json5 { "module": { "name": "entry", "type": "entry", "srcEntry": "./cangjie/Application/MyAbilityStage.ets", // 确保路径正确 "description": "$string:module_desc", "mainElement": "EntryAbility", "deviceTypes": ["phone", "tablet"], // ... 其他配置 } } ``` - **关键点**:`srcEntry` 必须指向实际的 `MyAbilityStage.ets` 文件路径(默认应在 `cangjie/Application/` 目录下) #### 2. **验证 AbilityStage 文件存在 在项目中检查文件是否存在: ``` entry/src/main/cangjie/Application/MyAbilityStage.ets ``` 如果缺失,创建该文件并添加基础内容: ```typescript import AbilityStage from '@ohos.app.ability.AbilityStage'; export default class MyAbilityStage extends AbilityStage { onCreate() { console.log('MyAbilityStage onCreate'); } } ``` #### 3. **更新 `build-profile.json5` 在 `entry/build-profile.json5` 中添加仓颉编译配置: ```json5 { "apiType": "harmony", "buildOption": { // 添加以下仓颉编译支持 "cangjie": true }, "targets": [ { "name": "default", "runtimeOS": "HarmonyOS" } ] } ``` #### 4. **清理并重建项目 1. 删除以下目录: - `entry/build` - `entry/.cxx` - 项目根目录的 `build` 文件夹 2. 在 DevEco Studio 中执行: - **Build > Clean Project** - **File > Invalidate Caches / Restart** #### 5. **检查仓颉插件版本 1. 打开 `hvigor/cangjie-build-support-x.y.z-cj.x.tgz` 2. 确认版本与 DevEco Studio 兼容(最低要求 3.1+) 3. 更新插件(如需): ```bash # 在项目根目录执行 npm update cangjie-build-support ``` #### 6. **验证 `oh-package.json5` 依赖 在 `entry/oh-package.json5` 中添加仓颉运行时依赖: ```json5 { "name": "entry", "version": "1.0.0", "dependencies": { "@ohos/hvigor": "1.0.5", "@ohos/hvigor-ohos-plugin": "1.0.5", // 添加仓颉核心库 ↓ "@cangjie/runtime": "^1.0.0" } } ``` > 提示:完成以上步骤后,重新运行 `hvigor` 命令应能解决该错误。如问题依旧,请检查控制台完整错误日志中的行号定位问题文件[^1]。 ### 补充说明 - **为什么需要 MyAbilityStage**? 在 HarmonyOS Stage 模型中,`AbilityStage` 是应用的入口点,负责管理应用生命周期。仓颉项目必须明确定义该模块[^1]。 - **路径大小写敏感**:HarmonyOS 构建系统对文件路径大小写敏感,确保 `Application` 目录首字母大写。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值