鸿蒙开发接口Ability框架:【ServiceExtensionContext】

 ServiceExtensionContext

ServiceExtensionContext模块是ServiceExtension的上下文环境,继承自ExtensionContext。

ServiceExtensionContext模块提供ServiceExtension具有的能力和接口,包括启动、停止、绑定、解绑Ability。

说明:
开发前请熟悉鸿蒙开发指导文档: gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。
本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
本模块接口仅可在Stage模型下使用。

使用说明

ServiceExtensionContext模块是ServiceExtension的上下文环境,继承自ExtensionContext。

属性

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

名称参数类型可读可写说明
extensionAbilityInfoExtensionAbilityInfo服务扩展信息。

startAbility

startAbility(want: Want, callback: AsyncCallback<void>): void;

启动Ability。

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

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
wantWantWant类型参数,传入需要启动的ability的信息,如ability名称,包名等。
callbackAsyncCallback<void>回调函数,返回接口调用是否成功的结果。

示例:

import ExtensionContext from '@ohos.application.ServiceExtensionAbility';
class MainAbility extends ExtensionContext {
    onWindowStageCreate(windowStage) {
        let want = {
            "bundleName": "com.example.myapp",
            "abilityName": "MyAbility"};
        this.context.startAbility(want, (err) => {
        console.log('startAbility result:' + JSON.stringify(err));
        });
    }
}

startAbility

startAbility(want: Want, options?: StartOptions): Promise<void>;

启动Ability。通过Promise返回结果。

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

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
wantWantWant类型参数,传入需要启动的ability的信息,如ability名称,包名等。
optionsStartOptions启动Ability所携带的参数。

返回值:

类型说明
Promise<void>返回一个Promise,包含接口的结果。

示例:

  import ExtensionContext from '@ohos.application.ServiceExtensionAbility';
  class MainAbility extends ExtensionContext {
      onWindowStageCreate(windowStage) {
          let want = {
          "bundleName": "com.example.myapp",
          "abilityName": "MyAbility"
          };
      this.context.startAbility(want).then((data) => {
          console.log('success:' + JSON.stringify(data));
      }).catch((error) => {
          console.log('failed:' + JSON.stringify(error));
      });
      }
  }

startAbility

startAbility(want: Want, options: StartOptions, callback: AsyncCallback<void>): void

启动Ability。

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

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
wantWant启动Ability的want信息。
optionsStartOptions启动Ability所携带的参数。
callbackAsyncCallback<void>callback形式返回启动结果。

示例:

var want = {
    "deviceId": "",
    "bundleName": "com.extreme.test",
    "abilityName": "MainAbility"
};
var options = {
    windowMode: 0,
};
this.context.startAbility(want, options, (error) => {
    console.log("error.code = " + error.code)
})

ServiceExtensionContext.startAbilityWithAccount

startAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback<void>): void;

根据account启动Ability(callback形式)。

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

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
wantWant启动Ability的want信息。
accountIdnumber需要启动的accountId。
callbackAsyncCallback<void>启动Ability的回调函数。

示例:

var want = {
  "deviceId": "",
  "bundleName": "com.extreme.test",
  "abilityName": "MainAbility"
};
var accountId = 100;
this.context.startAbilityWithAccount(want, accountId, (err) => {
  console.log('---------- startAbilityWithAccount fail, err:  -----------', err);
});

ServiceExtensionContext.startAbilityWithAccount

startAbilityWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback<void>): void;

根据account启动Ability(callback形式)。

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

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
wantWant启动Ability的want信息。
accountIdnumber需要启动的accountId。
optionsStartOptions启动Ability所携带的参数。
callbackAsyncCallback<void>启动Ability的回调函数。

示例:

var want = {
  "deviceId": "",
  "bundleName": "com.extreme.test",
  "abilityName": "MainAbility"
};
var accountId = 100;
var options = {
  windowMode: 0,
};
this.context.startAbilityWithAccount(want, accountId, options, (err) => {
  console.log('---------- startAbilityWithAccount fail, err:  -----------', err);
});

ServiceExtensionContext.startAbilityWithAccount

startAbilityWithAccount(want: Want, accountId: number, options?: StartOptions): Promise<void>;

根据account启动Ability(Promise形式)。

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

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
wantWant启动Ability的want信息。
accountIdnumber需要启动的accountId。
optionsStartOptions启动Ability所携带的参数。

示例:

var want = {
  "deviceId": "",
  "bundleName": "com.extreme.test",
  "abilityName": "MainAbility"
};
var accountId = 100;
var options = {
  windowMode: 0,
};
this.context.startAbilityWithAccount(want, accountId, options)
  .then((data) => {
      console.log('---------- startAbilityWithAccount success, data:  -----------', data);
  })
  .catch((err) => {
      console.log('---------- startAbilityWithAccount fail, err:  -----------', err);
  })

ServiceExtensionContext.terminateSelf

terminateSelf(callback: AsyncCallback<void>): void;

停止Ability自身。

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

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
callbackAsyncCallback<void>回调函数,返回接口调用是否成功的结果。

示例:

  import ExtensionContext from '@ohos.application.ServiceExtensionAbility';
      class MainAbility extends ExtensionContext {
          onWindowStageCreate(windowStage) {
          this.context.terminateSelf((err) => {
            console.log('terminateSelf result:' + JSON.stringify(err));
          });
          }
      }

ServiceExtensionContext.terminateSelf

terminateSelf(): Promise<void>;

停止自身。通过Promise返回结果。

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

系统API: 此接口为系统接口,三方应用不支持调用。

返回值:

类型说明
Promise<void>返回一个Promise,包含接口的结果。

示例:

  import ExtensionContext from '@ohos.application.ServiceExtensionAbility';
  class MainAbility extends ExtensionContext {
  onWindowStageCreate(windowStage) {
    this.context.terminateSelf().then((data) => {
      console.log('success:' + JSON.stringify(data));
    }).catch((error) => {
      console.log('failed:' + JSON.stringify(error));
    });
  }
}

ServiceExtensionContext.connectAbility

connectAbility(want: Want, options: ConnectOptions): number;

将一个Ability与服务类型的Ability绑定。

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

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
wantWantWant类型参数,传入需要启动的ability的信息,如ability名称,包名等。
optionsConnectOptionsConnectOptions类型的回调函数,返回服务连接成功、断开或连接失败后的信息。

返回值:

类型说明
number返回一个number,后续根据这个number去断开连接。

示例:

let want = {
    "bundleName": "com.example.myapp",
    "abilityName": "MyAbility"
};
let options = {
    onConnect: function(elementName, proxy) {},
    onDisConnect: function(elementName) {},
    onFailed: function(code) {}
}
let connection = this.context.connectAbility(want,options);

ServiceExtensionContext.connectAbilityWithAccount

connectAbilityWithAccount(want: Want, accountId: number, options: ConnectOptions): number;

使用AbilityInfo.AbilityType.SERVICE模板和account将当前能力连接到一个能力。

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

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
wantWant启动Ability的want信息。
accountIdnumber需要启动的accountId。
optionsConnectOptions远端对象实例。

返回值:

类型说明
number返回Ability连接的结果code。

示例:

var want = {
  "deviceId": "",
  "bundleName": "com.extreme.test",
  "abilityName": "MainAbility"
};
var accountId = 100;
var options = {
  onConnect(elementName, remote) { console.log('----------- onConnect -----------') },
  onDisconnect(elementName) { console.log('----------- onDisconnect -----------') },
  onFailed(code) { console.log('----------- onFailed -----------') }
}
const result = this.context.connectAbilityWithAccount(want, accountId, options);
console.log('----------- connectAbilityResult: ------------', result);

ServiceExtensionContext.disconnectAbility

disconnectAbility(connection: number, callback:AsyncCallback<void>): void;

将一个Ability与绑定的服务类型的Ability解绑。

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

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
connectionnumber在connectAbility中返回的number。
callbackAsyncCallback<void>回调函数,返回接口调用是否成功的结果。

示例:

import ExtensionContext from '@ohos.application.ServiceExtensionAbility';
  class MainAbility extends ExtensionContext {
  onWindowStageCreate(windowStage) {
    let connection=1
    this.context.disconnectAbility(connection, (err) => { 
      // connection为connectAbility中的返回值
      console.log('terminateSelf result:' + JSON.stringify(err));
    });
  }
}

ServiceExtensionContext.disconnectAbility

disconnectAbility(connection: number): Promise<void>;

将一个Ability与绑定的服务类型的Ability解绑。通过Promise返回结果。

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

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
connectionnumber在connectAbility中返回的number。

返回值:

类型说明 HarmonyOS与OpenHarmony鸿蒙文档籽料:mau123789是v直接拿
Promise<void>返回一个Promise,包含接口的结果。

搜狗高速浏览器截图20240326151344.png


示例:

import ExtensionContext from '@ohos.application.ServiceExtensionAbility';
class MainAbility extends ExtensionContext {
  onWindowStageCreate(windowStage) {
    let connection=1
    this.context.disconnectAbility(connection).then((data) => { // connection为connectAbility中的返回值
    console.log('success:' + JSON.stringify(data));
    }).catch((error) => {
    console.log('failed:' + JSON.stringify(error));
    });
  }
}

鸿蒙开发岗位需要掌握那些核心要领?

目前还有很多小伙伴不知道要学习哪些鸿蒙技术?不知道重点掌握哪些?为了避免学习时频繁踩坑,最终浪费大量时间的。

自己学习时必须要有一份实用的鸿蒙(Harmony NEXT)资料非常有必要。 这里我推荐,根据鸿蒙开发官网梳理与华为内部人员的分享总结出的开发文档。内容包含了:【ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战】等技术知识点。

废话就不多说了,接下来好好看下这份资料。

如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习鸿蒙OpenHarmony知识←前往。下面是鸿蒙开发的学习路线图。

针对鸿蒙成长路线打造的鸿蒙学习文档。鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,帮助大家在技术的道路上更进一步。

其中内容包含:

《鸿蒙开发基础》鸿蒙OpenHarmony知识←前往

  1. ArkTS语言
  2. 安装DevEco Studio
  3. 运用你的第一个ArkTS应用
  4. ArkUI声明式UI开发
  5. .……

《鸿蒙开发进阶》鸿蒙OpenHarmony知识←前往

  1. Stage模型入门
  2. 网络管理
  3. 数据管理
  4. 电话服务
  5. 分布式应用开发
  6. 通知与窗口管理
  7. 多媒体技术
  8. 安全技能
  9. 任务管理
  10. WebGL
  11. 国际化开发
  12. 应用测试
  13. DFX面向未来设计
  14. 鸿蒙系统移植和裁剪定制
  15. ……

《鸿蒙开发实战》鸿蒙OpenHarmony知识←前往

  1. ArkTS实践
  2. UIAbility应用
  3. 网络案例
  4. ……

最后

鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值