openharmony 鸿蒙 js-apis-app-ability-serviceExtensionAbility-sys

2025-06-12 浏览 (1)

@ohos.app.ability.ServiceExtensionAbility (ServiceExtensionAbility) (System API)

The ServiceExtensionAbility module provides lifecycle callbacks when a ServiceExtensionAbility (background service) is created, destroyed, connected, or disconnected.

NOTE

The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version.

The APIs of this module can be used only in the stage model.

The APIs provided by this module are system APIs.

Modules to Import

import { ServiceExtensionAbility } from '@kit.AbilityKit';

Required Permissions

None.

Properties

System capability: SystemCapability.Ability.AbilityRuntime.Core

System API: This is a system API.

NameTypeReadableWritableDescription
contextServiceExtensionContextYesNoServiceExtensionContext, which is inherited from ExtensionContext.

ServiceExtensionAbility.onCreate

onCreate(want: Want): void;

Called to initialize the service logic when a ServiceExtensionAbility is being created.

System capability: SystemCapability.Ability.AbilityRuntime.Core

System API: This is a system API.

Parameters

NameTypeMandatoryDescription
wantWantYesWant information related to this ServiceExtensionAbility, including the ability name and bundle name.

Example

import { ServiceExtensionAbility, Want } from '@kit.AbilityKit';

class ServiceExt extends ServiceExtensionAbility {
  onCreate(want: Want) {
    console.log(`onCreate, want: ${want.abilityName}`);
  }
}

ServiceExtensionAbility.onDestroy

onDestroy(): void;

Called to clear resources when this ServiceExtensionAbility is being destroyed.

System capability: SystemCapability.Ability.AbilityRuntime.Core

System API: This is a system API.

Example

import { ServiceExtensionAbility } from '@kit.AbilityKit';

class ServiceExt extends ServiceExtensionAbility {
  onDestroy() {
    console.log('onDestroy');
  }
}

ServiceExtensionAbility.onRequest

onRequest(want: Want, startId: number): void;

Called following onCreate() when a ServiceExtensionAbility is started by calling startAbility() or startServiceExtensionAbility(). The value of startId is incremented for each ServiceExtensionAbility that is started.

System capability: SystemCapability.Ability.AbilityRuntime.Core

System API: This is a system API.

Parameters

NameTypeMandatoryDescription
wantWantYesWant information related to this ServiceExtensionAbility, including the ability name and bundle name.
startIdnumberYesNumber of ServiceExtensionAbility start times. The initial value is 1, and the value is automatically incremented for each ServiceExtensionAbility started.

Example

import { ServiceExtensionAbility, Want } from '@kit.AbilityKit';

class ServiceExt extends ServiceExtensionAbility {
  onRequest(want: Want, startId: number) {
    console.log('onRequest, want: ${want.abilityName}');
  }
}

ServiceExtensionAbility.onConnect

onConnect(want: Want): rpc.RemoteObject|Promise<rpc.RemoteObject>;

Called following onCreate() when a ServiceExtensionAbility is started by calling connectAbility(). A RemoteObject object is returned for communication between the server and client.

System capability: SystemCapability.Ability.AbilityRuntime.Core

System API: This is a system API.

Parameters

NameTypeMandatoryDescription
wantWantYesWant information related to this ServiceExtensionAbility, including the ability name and bundle name.

Return value

TypeDescription
rpc.RemoteObject |Promise<rpc.RemoteObject>RemoteObject object or Promise used to return a RemoteObject object, which is used for communication between the client and server.

Example

import { ServiceExtensionAbility, Want } from '@kit.AbilityKit';
import { rpc } from '@kit.IPCKit';

class StubTest extends rpc.RemoteObject{
  constructor(des: string) {
    super(des);
  }
  onConnect(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption) {
  }
}
class ServiceExt extends ServiceExtensionAbility {
  onConnect(want: Want) {
    console.log('onConnect , want: ${want.abilityName}');
    return new StubTest('test');
  }
}

If the returned RemoteObject object depends on an asynchronous API, you can use the asynchronous lifecycle.

import { ServiceExtensionAbility, Want } from '@kit.AbilityKit';
import { rpc } from '@kit.IPCKit';

class StubTest extends rpc.RemoteObject{
  constructor(des: string) {
    super(des);
  }
  onConnect(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption) {
  }
}
async function getDescriptor() {
  // Call the asynchronous function.
  return "asyncTest"
}
class ServiceExt extends ServiceExtensionAbility {
  async onConnect(want: Want) {
    console.log(`onConnect , want: ${want.abilityName}`);
    let descriptor = await getDescriptor();
    return new StubTest(descriptor);
  }
}

ServiceExtensionAbility.onDisconnect

onDisconnect(want: Want): void|Promise<void>;

Called when a client is disconnected from this ServiceExtensionAbility.

System capability: SystemCapability.Ability.AbilityRuntime.Core

System API: This is a system API.

Parameters

NameTypeMandatoryDescription
wantWantYesWant information related to this ServiceExtensionAbility, including the ability name and bundle name.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

import { ServiceExtensionAbility, Want } from '@kit.AbilityKit';

class ServiceExt extends ServiceExtensionAbility {
  onDisconnect(want: Want) {
    console.log('onDisconnect, want: ${want.abilityName}');
  }
}

After the onDisconnect() lifecycle callback is executed, the application may exit. Consequently, the asynchronous function (for example, asynchronously writing data to the database) in onDisconnect() may fail to be executed. The asynchronous lifecycle can be used to ensure that the subsequent lifecycle continues after the asynchronous onDisconnect() is complete.

import { ServiceExtensionAbility, Want } from '@kit.AbilityKit';

class ServiceExt extends ServiceExtensionAbility {
  async onDisconnect(want: Want) {
    console.log('onDisconnect, want: ${want.abilityName}');
    // Call the asynchronous function.
  }
}

ServiceExtensionAbility.onReconnect

onReconnect(want: Want): void;

Called when a new client attempts to connect to this ServiceExtensionAbility after all previous clients are disconnected. This capability is reserved.

System capability: SystemCapability.Ability.AbilityRuntime.Core

System API: This is a system API.

Parameters

NameTypeMandatoryDescription
wantWantYesWant information related to this ServiceExtensionAbility, including the ability name and bundle name.

Example

import { ServiceExtensionAbility, Want } from '@kit.AbilityKit';

class ServiceExt extends ServiceExtensionAbility {
  onReconnect(want: Want) {
    console.log('onReconnect, want: ${want.abilityName}');
  }
}

ServiceExtensionAbility.onConfigurationUpdate

onConfigurationUpdate(newConfig: Configuration): void;

Called when the configuration of this ServiceExtensionAbility is updated.

System capability: SystemCapability.Ability.AbilityRuntime.Core

System API: This is a system API.

Parameters

NameTypeMandatoryDescription
newConfigConfigurationYesNew configuration.

Example

import { ServiceExtensionAbility, Configuration } from '@kit.AbilityKit';

class ServiceExt extends ServiceExtensionAbility {
  onConfigurationUpdate(newConfig: Configuration) {
    console.log(`onConfigurationUpdate, config: ${JSON.stringify(newConfig)}`);
  }
}

ServiceExtensionAbility.onDump

onDump(params: Array<string>): Array<string>;

Dumps the client information.

System capability: SystemCapability.Ability.AbilityRuntime.Core

System API: This is a system API.

Parameters

NameTypeMandatoryDescription
paramsArray<string>YesParameters in the form of a command.

Return value

TypeDescription
Array<string>Array of client information.

Example

import { ServiceExtensionAbility } from '@kit.AbilityKit';

class ServiceExt extends ServiceExtensionAbility {
  onDump(params: Array<string>) {
    console.log(`dump, params: ${JSON.stringify(params)}`);
    return ['params'];
  }
}

你可能感兴趣的鸿蒙文章

harmony 鸿蒙Ability Kit

harmony 鸿蒙AbilityAccessControl

harmony 鸿蒙AbilityBase

harmony 鸿蒙AbilityBase_Element

harmony 鸿蒙AbilityRuntime

harmony 鸿蒙bundle

harmony 鸿蒙OH_NativeBundle_ApplicationInfo

harmony 鸿蒙OH_NativeBundle_ElementName

harmony 鸿蒙ability_access_control.h

harmony 鸿蒙ability_base_common.h

  • 所属分类: 后端技术
  • 本文标签: 软件 鸿蒙
  • 版权声明: 本文链接 https://seaxiang.com/blog/nqgQC0