文章配图: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
场景 跨模块跳转 同模块页面

四、最佳实践

  1. 参数传递:使用 parameters 字段
  2. 错误处理:try-catch 捕获启动失败
  3. 指定 bundleName:明确目标应用
  4. 启动前检查:canIUse 判断能力是否可用

总结

startAbility 启动另一个 Ability,支持携带参数。核心要点:Want 配置目标、 parameters 传参、 startAbility(want) 启动

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐