HarmonyOS应用开发实战:猫猫大作战-startAbility 启动 Ability
·


前言
startAbility 是 HarmonyOS 中启动另一个 Ability 的 API。在「猫猫大作战」中,startAbility 用于打开设置页、跳转到好友信息、启动分享等。
一、startAbility 基础
import { common, Want } from '@kit.AbilityKit';
async function startSettings(context: common.UIAbilityContext): Promise<void> {
const want: Want = {
deviceId: '', // 空表示本设备
bundleName: 'com.maomaodazuozhan.game',
abilityName: 'SettingsAbility',
parameters: {
from: 'main_menu',
},
};
try {
await context.startAbility(want);
console.info('设置页面已启动');
} catch (err) {
console.error(`启动失败: ${err.message}`);
}
}
二、传递参数
// 启动时携带参数
const want: Want = {
bundleName: 'com.maomaodazuozhan.game',
abilityName: 'DetailAbility',
parameters: {
catId: 'cat_001',
catLevel: 3,
fromPage: 'game_board',
},
};
// 目标 Ability 接收参数
// EntryAbility.ets
onCreate(want: Want): void {
const catId = want.parameters?.catId as string;
const catLevel = want.parameters?.catLevel as number;
console.info(`查看猫咪: ${catId}, 等级: ${catLevel}`);
}
三、startAbility vs router
| 特性 | startAbility | router.push |
|---|---|---|
| 页面切换 | Ability 级 | Page 级 |
| 动画 | 系统默认 | 可自定义 |
| 传参 | Want.parameters | router.params |
| 场景 | 跨模块跳转 | 同模块页面 |
四、最佳实践
- 参数传递:使用
parameters字段 - 错误处理:try-catch 捕获启动失败
- 指定 bundleName:明确目标应用
- 启动前检查:canIUse 判断能力是否可用
总结
startAbility 启动另一个 Ability,支持携带参数。核心要点:Want 配置目标、 parameters 传参、 startAbility(want) 启动。
如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!
相关资源:
更多推荐


所有评论(0)