鸿蒙开发Ability Kit(程序框架服务):【API切换概述】API切换

API切换概述

FA模型和Stage模型由于线程模型和进程模型的差异,部分接口仅在FA模型下才能使用,针对这部分接口在SDK的接口中有FAModelOnly的标记,用于提醒开发者这部分接口仅能在FA模型下使用。因此在切换到Stage模型时,需要将应用中用到的FAModelOnly接口替换成Stage模型下对应的接口。下面是startAbility的接口切换示例,全量接口列表请查看后续章节:

api-switch-overview

startAbility接口由FA模型切换到Stage模型的示例:

  • FA模型示例

    import featureAbility from '@ohos.ability.featureAbility';
    import Want from '@ohos.app.ability.Want';
    import hilog from '@ohos.hilog';
    
    const TAG: string = 'PagePageAbilityFirst';
    const domain: number = 0xFF00;
    
    @Entry
    @Component
    struct PagePageAbilityFirst {
      
      build() {
        Column() {
          List({ initialIndex: 0 }) {
            ListItem() {
              Flex({ justifyContent: FlexAlign.SpaceBetween, alignContent: FlexAlign.Center }) {
                //...
              }
              .onClick(() => {
                (async (): Promise<void> => {
                  try {
                    hilog.info(domain, TAG, 'Begin to start ability');
                    let want: Want = {
                      bundleName: 'com.samples.famodelabilitydevelop',
                      moduleName: 'entry',
                      abilityName: 'com.samples.famodelabilitydevelop.PageAbilitySingleton'
                    };
                    await featureAbility.startAbility({ want: want });
                    hilog.info(domain, TAG, `Start ability succeed`);
                  }
                  catch (error) {
                    hilog.error(domain, TAG, 'Start ability failed with ' + error);
                  }
                })()
              })
            }
            //...
          }
          //...
        }
        //...
      }
    }
    
  • Stage示例示例

    import hilog from '@ohos.hilog';
    import Want from '@ohos.app.ability.Want';
    import common from '@ohos.app.ability.common';
    import { BusinessError } from '@ohos.base';
    import { Caller } from '@ohos.app.ability.UIAbility';
    
    const TAG: string = '[Page_UIAbilityComponentsInteractive]';
    const DOMAIN_NUMBER: number = 0xFF00;
    
    @Entry
    @Component
    struct Page_UIAbilityComponentsInteractive {
      private context = getContext(this) as common.UIAbilityContext;
      caller: Caller | undefined = undefined;
      build() {
        Column() {
          //...
          List({ initialIndex: 0 }) {
            ListItem() {
              Row() {
                //...
              }
              .onClick(() => {
                // context为Ability对象的成员,在非Ability对象内部调用需要
                // 将Context对象传递过去
                let wantInfo: Want = {
                  deviceId: '', // deviceId为空表示本设备
                  bundleName: 'com.samples.stagemodelabilitydevelop',
                  moduleName: 'entry', // moduleName非必选
                  abilityName: 'FuncAbilityA',
                  parameters: { // 自定义信息
                    info: '来自EntryAbility Page_UIAbilityComponentsInteractive页面'
                  },
                };
                // context为调用方UIAbility的UIAbilityContext
                this.context.startAbility(wantInfo).then(() => {
                  hilog.info(DOMAIN_NUMBER, TAG, 'startAbility success.');
                }).catch((error: BusinessError) => {
                  hilog.error(DOMAIN_NUMBER, TAG, 'startAbility failed.');
                });
              })
            }
            //...
          }
          //...
        }
        //...
      }
    }
    

    在这里插入图片描述

  • 26
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值