• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.app.ability.ServiceExtensionAbility (ServiceExtensionAbility)
2
3The **ServiceExtensionAbility** module provides lifecycle callbacks when a ServiceExtensionAbility (background service) is created, destroyed, connected, or disconnected.
4
5> **NOTE**
6>
7> 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.
8> The APIs provided by this module are system APIs.
9> The APIs of this module can be used only in the stage model.
10
11## Modules to Import
12
13```ts
14import ServiceExtension from '@ohos.app.ability.ServiceExtensionAbility';
15```
16
17## Required Permissions
18
19None.
20
21## Attributes
22
23**System capability**: SystemCapability.Ability.AbilityRuntime.Core
24
25**System API**: This is a system API and cannot be called by third-party applications.
26
27| Name| Type| Readable| Writable| Description|
28| -------- | -------- | -------- | -------- | -------- |
29| context | [ServiceExtensionContext](js-apis-inner-application-serviceExtensionContext.md)  | Yes| No| ServiceExtensionContext, which is inherited from **ExtensionContext**.|
30
31
32## ServiceExtensionAbility.onCreate
33
34onCreate(want: Want): void;
35
36Called to initialize the service logic when a ServiceExtensionAbility is being created.
37
38**System capability**: SystemCapability.Ability.AbilityRuntime.Core
39
40**System API**: This is a system API and cannot be called by third-party applications.
41
42**Parameters**
43
44| Name| Type| Mandatory| Description|
45| -------- | -------- | -------- | -------- |
46| want |  [Want](js-apis-app-ability-want.md) | Yes| Want information related to this ServiceExtensionAbility, including the ability name and bundle name.|
47
48**Example**
49
50  ```ts
51  import ServiceExtension from '@ohos.app.ability.ServiceExtensionAbility';
52  import Want from '@ohos.app.ability.Want';
53
54  class ServiceExt extends ServiceExtension {
55    onCreate(want: Want) {
56      console.log('onCreate, want: ${want.abilityName}');
57    }
58  }
59  ```
60
61
62## ServiceExtensionAbility.onDestroy
63
64onDestroy(): void;
65
66Called to clear resources when this ServiceExtensionAbility is being destroyed.
67
68**System capability**: SystemCapability.Ability.AbilityRuntime.Core
69
70**System API**: This is a system API and cannot be called by third-party applications.
71
72**Example**
73
74  ```ts
75  import ServiceExtension from '@ohos.app.ability.ServiceExtensionAbility';
76
77  class ServiceExt extends ServiceExtension {
78    onDestroy() {
79      console.log('onDestroy');
80    }
81  }
82  ```
83
84
85## ServiceExtensionAbility.onRequest
86
87onRequest(want: Want, startId: number): void;
88
89Called following **onCreate()** when a ServiceExtensionAbility is started by calling **startAbility()** or **startServiceExtensionAbility()**. The value of **startId** is incremented for each ServiceExtensionAbility that is started.
90
91**System capability**: SystemCapability.Ability.AbilityRuntime.Core
92
93**System API**: This is a system API and cannot be called by third-party applications.
94
95**Parameters**
96
97| Name| Type| Mandatory| Description|
98| -------- | -------- | -------- | -------- |
99| want |  [Want](js-apis-app-ability-want.md) | Yes| Want information related to this ServiceExtensionAbility, including the ability name and bundle name.|
100| startId | number | Yes| Number of ServiceExtensionAbility start times. The initial value is **1**, and the value is automatically incremented for each ServiceExtensionAbility started.|
101
102**Example**
103
104  ```ts
105  import ServiceExtension from '@ohos.app.ability.ServiceExtensionAbility';
106  import Want from '@ohos.app.ability.Want';
107
108  class ServiceExt extends ServiceExtension {
109    onRequest(want: Want, startId: number) {
110      console.log('onRequest, want: ${want.abilityName}');
111    }
112  }
113  ```
114
115
116## ServiceExtensionAbility.onConnect
117
118onConnect(want: Want): rpc.RemoteObject | Promise<rpc.RemoteObject>;
119
120Called following **onCreate()** when a ServiceExtensionAbility is started by calling **connectAbility()**. A **RemoteObject** object is returned for communication between the server and client.
121
122**System capability**: SystemCapability.Ability.AbilityRuntime.Core
123
124**System API**: This is a system API and cannot be called by third-party applications.
125
126**Parameters**
127
128| Name| Type| Mandatory| Description|
129| -------- | -------- | -------- | -------- |
130| want |  [Want](js-apis-app-ability-want.md)| Yes| Want information related to this ServiceExtensionAbility, including the ability name and bundle name.|
131
132**Return value**
133
134| Type| Description|
135| -------- | -------- |
136| rpc.RemoteObject | A **RemoteObject** object used for communication between the server and client.|
137
138**Example**
139
140  ```ts
141  import rpc from '@ohos.rpc';
142  import ServiceExtension from '@ohos.app.ability.ServiceExtensionAbility';
143  import Want from '@ohos.app.ability.Want';
144
145  class StubTest extends rpc.RemoteObject{
146      constructor(des: string) {
147          super(des);
148      }
149      onConnect(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption) {
150      }
151  }
152  class ServiceExt extends ServiceExtension {
153    onConnect(want: Want) {
154      console.log('onConnect , want: ${want.abilityName}');
155      return new StubTest('test');
156    }
157  }
158  ```
159
160If the returned **RemoteObject** object depends on an asynchronous API, you can use the asynchronous lifecycle.
161
162  ```ts
163import rpc from '@ohos.rpc';
164import ServiceExtension from '@ohos.app.ability.ServiceExtensionAbility';
165import Want from '@ohos.app.ability.Want';
166
167class StubTest extends rpc.RemoteObject{
168    constructor(des: string) {
169        super(des);
170    }
171    onConnect(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption) {
172    }
173}
174async function getDescriptor() {
175    // Call the asynchronous function.
176    return "asyncTest"
177}
178class ServiceExt extends ServiceExtension {
179  async onConnect(want: Want) {
180    console.log(`onConnect , want: ${want.abilityName}`);
181    let descriptor = await getDescriptor();
182    return new StubTest(descriptor);
183  }
184}
185  ```
186
187## ServiceExtensionAbility.onDisconnect
188
189onDisconnect(want: Want): void | Promise\<void>;
190
191Called when a client is disconnected from this ServiceExtensionAbility.
192
193**System capability**: SystemCapability.Ability.AbilityRuntime.Core
194
195**System API**: This is a system API and cannot be called by third-party applications.
196
197**Parameters**
198
199| Name| Type| Mandatory| Description|
200| -------- | -------- | -------- | -------- |
201| want |[Want](js-apis-app-ability-want.md)| Yes| Want information related to this ServiceExtensionAbility, including the ability name and bundle name.|
202
203**Example**
204
205  ```ts
206  import ServiceExtension from '@ohos.app.ability.ServiceExtensionAbility';
207  import Want from '@ohos.app.ability.Want';
208
209  class ServiceExt extends ServiceExtension {
210    onDisconnect(want: Want) {
211      console.log('onDisconnect, want: ${want.abilityName}');
212    }
213  }
214  ```
215
216After 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.
217
218  ```ts
219import ServiceExtension from '@ohos.app.ability.ServiceExtensionAbility';
220import Want from '@ohos.app.ability.Want';
221
222class ServiceExt extends ServiceExtension {
223  async onDisconnect(want: Want) {
224    console.log('onDisconnect, want: ${want.abilityName}');
225    // Call the asynchronous function.
226  }
227}
228  ```
229
230## ServiceExtensionAbility.onReconnect
231
232onReconnect(want: Want): void;
233
234Called when a new client attempts to connect to this ServiceExtensionAbility after all previous clients are disconnected. This capability is reserved.
235
236**System capability**: SystemCapability.Ability.AbilityRuntime.Core
237
238**System API**: This is a system API and cannot be called by third-party applications.
239
240**Parameters**
241
242| Name| Type| Mandatory| Description|
243| -------- | -------- | -------- | -------- |
244| want |[Want](js-apis-app-ability-want.md)| Yes| Want information related to this ServiceExtensionAbility, including the ability name and bundle name.|
245
246**Example**
247
248  ```ts
249  import ServiceExtension from '@ohos.app.ability.ServiceExtensionAbility';
250  import Want from '@ohos.app.ability.Want';
251
252  class ServiceExt extends ServiceExtension {
253    onReconnect(want: Want) {
254      console.log('onReconnect, want: ${want.abilityName}');
255    }
256  }
257  ```
258
259## ServiceExtensionAbility.onConfigurationUpdate
260
261onConfigurationUpdate(newConfig: Configuration): void;
262
263Called when the configuration of this ServiceExtensionAbility is updated.
264
265**System capability**: SystemCapability.Ability.AbilityRuntime.Core
266
267**System API**: This is a system API and cannot be called by third-party applications.
268
269**Parameters**
270
271| Name| Type| Mandatory| Description|
272| -------- | -------- | -------- | -------- |
273| newConfig | [Configuration](js-apis-app-ability-configuration.md) | Yes| New configuration.|
274
275**Example**
276
277  ```ts
278  import ServiceExtension from '@ohos.app.ability.ServiceExtensionAbility';
279  import { Configuration } from '@ohos.app.ability.Configuration';
280
281  class ServiceExt extends ServiceExtension {
282      onConfigurationUpdate(config: Configuration) {
283          console.log(`onConfigurationUpdate, config: ${JSON.stringify(config)}`);
284      }
285  }
286  ```
287
288## ServiceExtensionAbility.onDump
289
290onDump(params: Array\<string>): Array\<string>;
291
292Dumps the client information.
293
294**System capability**: SystemCapability.Ability.AbilityRuntime.Core
295
296**System API**: This is a system API and cannot be called by third-party applications.
297
298**Parameters**
299
300| Name| Type| Mandatory| Description|
301| -------- | -------- | -------- | -------- |
302| params | Array\<string> | Yes| Parameters in the form of a command.|
303
304**Example**
305
306  ```ts
307  import ServiceExtension from '@ohos.app.ability.ServiceExtensionAbility';
308
309  class ServiceExt extends ServiceExtension {
310      onDump(params: Array<string>) {
311          console.log(`dump, params: ${JSON.stringify(params)}`);
312          return ['params'];
313      }
314  }
315  ```
316