前言
startAbility是 HarmonyOS 中启动另一个 Ability 的 API。在「猫猫大作战」中,startAbility 用于打开设置页、跳转到好友信息、启动分享等。
一、startAbility 基础
import{common,Want}from'@kit.AbilityKit';asyncfunctionstartSettings(context:common.UIAbilityContext):Promise<void>{constwant:Want={deviceId:'',// 空表示本设备bundleName:'com.maomaodazuozhan.game',abilityName:'SettingsAbility',parameters:{from:'main_menu',},};try{awaitcontext.startAbility(want);console.info('设置页面已启动');}catch(err){console.error(`启动失败:${err.message}`);}}二、传递参数
// 启动时携带参数constwant:Want={bundleName:'com.maomaodazuozhan.game',abilityName:'DetailAbility',parameters:{catId:'cat_001',catLevel:3,fromPage:'game_board',},};// 目标 Ability 接收参数// EntryAbility.etsonCreate(want:Want):void{constcatId=want.parameters?.catIdasstring;constcatLevel=want.parameters?.catLevelasnumber;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)启动。
如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!
相关资源:
- startAbility 文档
- 第 108 篇:event-hub
- 第 110 篇:start-by-type
- 第 111 篇:engine-class