js-apis-service-extension.md 4.0 KB
Newer Older
1 2 3 4 5 6
# ServiceExtension

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。


7
提供ServiceExtension服务扩展相关接口。
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23


## 导入模块

```
import ServiceExtension from '@ohos.application.ServiceExtension';
```


## 权限




## 属性

24
| 名称 | 参数类型 | 可读 | 可写 | 说明 | 
25
| -------- | -------- | -------- | -------- | -------- |
26
| context | [ServiceExtensionContext](js-apis-service-extension-context.md)  | 是 | 否 | ServiceExtension的上下文环境,继承自ExtensionContext。 | 
27 28 29 30


## onCreate

31
onCreate(want: Want): void;
32

33
Extension生命周期回调,在创建时回调,执行初始化业务逻辑操作。
34

ahjxliubao2's avatar
ahjxliubao2 已提交
35 36 37 38
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

39
- 参数:
40
  | 参数名 | 类型 | 必填 | 说明 | 
41
  | -------- | -------- | -------- | -------- |
42
  | want |  [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 当前Extension相关的Want类型信息,包括ability名称、bundle名称等。 | 
43 44 45

- 示例:
  ```
ahjxliubao2's avatar
ahjxliubao2 已提交
46 47
  class ServiceExt extends ServiceExtension {
    onCreate(want) {
48
      console.log('onCreate, want:' + want.abilityName);
ahjxliubao2's avatar
ahjxliubao2 已提交
49
    }
50 51 52 53 54 55
  }
  ```


## onDestroy

56
onDestroy(): void;
57

58
Extension生命周期回调,在销毁时回调,执行资源清理等操作。
59

ahjxliubao2's avatar
ahjxliubao2 已提交
60 61 62 63
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

64 65
- 示例:
  ```
ahjxliubao2's avatar
ahjxliubao2 已提交
66 67
  class ServiceExt extends ServiceExtension {
    onDestroy() {
68
      console.log('onDestroy');
ahjxliubao2's avatar
ahjxliubao2 已提交
69
    }
70 71 72 73 74 75
  }
  ```


## onRequest

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

78
Extension生命周期回调,如果是startAbility拉起的服务,会在onCreate之后回调。每次拉起服务都会回调,startId会递增。
79

ahjxliubao2's avatar
ahjxliubao2 已提交
80 81 82 83
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

84
- 参数:
85
  | 参数名 | 类型 | 必填 | 说明 | 
86
  | -------- | -------- | -------- | -------- |
87 88
  | want |  [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 当前Extension相关的Want类型信息,包括ability名称、bundle名称等。 | 
  | startId | number | 是 | 返回拉起次数。首次拉起初始值返回1,多次之后自动递增。 | 
89 90 91

- 示例:
  ```
ahjxliubao2's avatar
ahjxliubao2 已提交
92 93
  class ServiceExt extends ServiceExtension {
    onRequest(want, startId) {
94
      console.log('onRequest, want:' + want.abilityName);
ahjxliubao2's avatar
ahjxliubao2 已提交
95
    }
96 97 98 99 100 101
  }
  ```


## onConnect

102
onConnect(want: Want): rpc.RemoteObject;
103

104
Extension生命周期回调,如果是connectAbility拉起的服务,会在onCreate之后回调。返回一个RemoteObject对象,用于和客户端进行通信。
105

ahjxliubao2's avatar
ahjxliubao2 已提交
106 107 108 109
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

110
- 参数:
111
  | 参数名 | 类型 | 必填 | 说明 | 
112
  | -------- | -------- | -------- | -------- |
113
  | want |  [Want](js-apis-featureAbility.md#Want类型说明)| 是 | 当前Extension相关的Want类型信息,包括ability名称、bundle名称等。 | 
114 115

- 返回值:
116
  | 类型 | 说明 | 
117
  | -------- | -------- |
118
  | rpc.RemoteObject | 一个RemoteObject对象,用于和客户端进行通信。 | 
119 120 121 122 123 124 125 126 127 128 129

- 示例:
  ```
  import rpc from '@ohos.rpc'
  class StubTest extends rpc.RemoteObject{
      constructor(des) {
          super(des);
      }
      onRemoteRequest(code, data, reply, option) {
      }
  }
ahjxliubao2's avatar
ahjxliubao2 已提交
130 131
  class ServiceExt extends ServiceExtension {
    onConnect(want) {
132 133
      console.log('onConnect , want:' + want.abilityName);
      return new StubTest("test");
ahjxliubao2's avatar
ahjxliubao2 已提交
134
    }
135 136 137 138 139 140
  }
  ```


## onDisconnect

141
onDisconnect(want: Want): void;
142 143 144

Extension的生命周期,断开服务连接时回调。

ahjxliubao2's avatar
ahjxliubao2 已提交
145 146 147 148
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

149
- 参数:
150
  | 参数名 | 类型 | 必填 | 说明 | 
151
  | -------- | -------- | -------- | -------- |
152
  | want |[Want](js-apis-featureAbility.md#Want类型说明)| 是 | 当前Extension相关的Want类型信息,包括ability名称、bundle名称等。 | 
153 154 155

- 示例:
  ```
ahjxliubao2's avatar
ahjxliubao2 已提交
156 157
  class ServiceExt extends ServiceExtension {
    onDisconnect(want) {
158
      console.log('onDisconnect, want:' + want.abilityName);
ahjxliubao2's avatar
ahjxliubao2 已提交
159
    }
160 161
  }
  ```