1# @ohos.app.ability.UIServiceExtensionAbility (UIServiceExtensionAbility) (System API)
2
3UIServiceExtensionAbility, inherited from [ExtensionAbility](js-apis-app-ability-extensionAbility.md), provides extension capabilities related to the floating window component. It is mainly used to provide services with UIs for third-party applications.
4
5
6> **NOTE**
7>
8> The initial APIs of this module are supported since API version 13. Newly added APIs will be marked with a superscript to indicate their earliest API version.
9>
10> The APIs of this module can be used only in the stage model.
11>
12> The APIs of this module must be used in the main thread, but not in sub-threads such as Worker and TaskPool.
13>
14> The APIs provided by this module are system APIs.
15
16## Modules to Import
17
18```ts
19import { UIServiceExtensionAbility } from '@kit.AbilityKit';
20```
21
22
23## Properties
24
25**System capability**: SystemCapability.Ability.AbilityRuntime.Core
26
27**System API**: This is a system API.
28
29| Name| Type| Read Only| Optional| Description|
30| -------- | -------- | -------- | -------- | -------- |
31| context | [UIServiceExtensionContext](js-apis-inner-application-uiserviceExtensionContext-sys.md) | Yes| No| Context environment for a [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md).|
32
33
34## UIServiceExtensionAbility.onCreate
35
36onCreate(want: Want): void
37
38Called to initialize the service logic.
39
40**System capability**: SystemCapability.Ability.AbilityRuntime.Core
41
42**System API**: This is a system API.
43
44**Parameters**
45
46| Name| Type| Read Only| Optional| Description|
47| -------- | -------- | -------- | -------- |  -------- |
48| want |  [Want](js-apis-app-ability-want.md) | Yes | No| [Want](js-apis-app-ability-want.md) information about the [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md), including the ability name and bundle name.|
49
50**Example**
51
52```ts
53import { UIServiceExtensionAbility, Want } from '@kit.AbilityKit';
54
55class UIServiceExt extends UIServiceExtensionAbility {
56  // Create a UIServiceExtensionAbility.
57  onCreate(want: Want) {
58    console.log(`onCreate, want: ${want.abilityName}`);
59  }
60}
61```
62
63
64## UIServiceExtensionAbility.onRequest
65
66onRequest(want: Want, startId: number): void
67
68Called to request to start a [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md). If the UIServiceExtensionAbility is started by calling [startAbility](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability) or [startUIServiceExtensionAbility](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartuiserviceextensionability13), this callback will be invoked after [onCreate](#uiserviceextensionabilityoncreate). The value of **startId** is incremented for each UIServiceExtensionAbility that is started.
69
70**System capability**: SystemCapability.Ability.AbilityRuntime.Core
71
72**System API**: This is a system API.
73
74**Parameters**
75
76| Name| Type| Read Only| Optional| Description|
77| -------- | -------- | -------- | -------- | -------- |
78| want |  [Want](js-apis-app-ability-want.md) | Yes| No|  [Want](js-apis-app-ability-want.md) information about the [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md), including the ability name and bundle name.|
79| startId | number | Yes|  |Number of UIServiceExtensionAbility start times. The initial value is **1**, and the value is automatically incremented for each UIServiceExtensionAbility started.|
80
81**Example**
82
83```ts
84import { UIServiceExtensionAbility, Want} from '@kit.AbilityKit';
85
86class UIServiceExt extends UIServiceExtensionAbility {
87  onRequest(want: Want, startId: number) {
88    console.log('onRequest, want:' + want.abilityName + ', startId:' + startId);
89  }
90}
91```
92
93
94## UIServiceExtensionAbility.onConnect
95
96onConnect(want: Want, proxy: UIServiceHostProxy): void
97
98Called when the connection to a [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md) is established. If the UIServiceExtensionAbility is started by calling [connectUIServiceExtensionAbility()](js-apis-inner-application-uiExtensionContext.md#uiextensioncontextconnectuiserviceextensionability13), this callback will be invoked after [onCreate()](#uiserviceextensionabilityoncreate). This callback receives a [UIServiceHostProxy](js-apis-inner-application-uiservicehostproxy-sys.md) object for communication between the client and server.
99
100**System capability**: SystemCapability.Ability.AbilityRuntime.Core
101
102**System API**: This is a system API.
103
104**Parameters**
105
106| Name| Type| Read Only| Optional| Description|
107| -------- | -------- | -------- | -------- | -------- |
108| want |  [Want](js-apis-app-ability-want.md)| Yes| No| [Want](js-apis-app-ability-want.md) information about the [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md), including the ability name and bundle name.|
109| proxy | [UIServiceHostProxy](js-apis-inner-application-uiservicehostproxy-sys.md) | Yes| No| [UIServiceHostProxy](js-apis-inner-application-uiservicehostproxy-sys.md) object, used for communication between the client and server.|
110
111
112**Example**
113
114```ts
115import { UIServiceExtensionAbility, Want, common} from '@kit.AbilityKit';
116
117class UIServiceExt extends UIServiceExtensionAbility {
118  onConnect(want: Want, proxy: common.UIServiceHostProxy){
119    console.log('onConnect, want:' + want.abilityName + '');
120  }
121}
122```
123
124
125## UIServiceExtensionAbility.onDisconnect
126
127onDisconnect(want: Want, proxy: UIServiceHostProxy): void
128
129Called when the connection to a [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md) is interrupted.
130
131**System capability**: SystemCapability.Ability.AbilityRuntime.Core
132
133**System API**: This is a system API.
134
135**Parameters**
136
137| Name| Type| Read Only| Optional| Description|
138| -------- | -------- | -------- | -------- | -------- |
139| want |[Want](js-apis-app-ability-want.md)| Yes| No| [Want](js-apis-app-ability-want.md) information about the [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md), including the ability name and bundle name.|
140| proxy |[UIServiceHostProxy](js-apis-inner-application-uiservicehostproxy-sys.md)| Yes| No| Proxy that sends data to the sender.|
141
142**Example**
143
144```ts
145import { UIServiceExtensionAbility, Want, common } from '@kit.AbilityKit';
146
147class UIServiceExt extends UIServiceExtensionAbility {
148  onDisconnect(want: Want, proxy: common.UIServiceHostProxy) {
149    console.log('onDisconnect, want: ${want.abilityName}');
150  }
151}
152```
153
154
155## UIServiceExtensionAbility.onWindowWillCreate
156
157onWindowWillCreate(config: window.ExtensionWindowConfig): void
158
159Called when a window will be created for the [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md). Through **window.ExtensionWindowConfig** in the callback, the foreground application sends the parameters for creating the window to the [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md).
160
161**System capability**: SystemCapability.Ability.AbilityRuntime.Core
162
163**System API**: This is a system API.
164
165**Parameters**
166
167| Name| Type| Read Only| Optional| Description|
168| -------- | -------- | -------- | -------- | -------- |
169| config |[window.ExtensionWindowConfig](../apis-arkui/js-apis-window-sys.md#extensionwindowconfig12)| Yes| No| Window configuration information.|
170
171**Example**
172
173```ts
174import { UIServiceExtensionAbility } from '@kit.AbilityKit';
175import { window } from '@kit.ArkUI';
176
177class UIServiceExt extends UIServiceExtensionAbility {
178  onWindowWillCreate(config : window.ExtensionWindowConfig){
179    console.log('onWindowWillCreate');
180  }
181}
182```
183
184## UIServiceExtensionAbility.onWindowDidCreate
185
186onWindowDidCreate(window: window.Window): void
187
188Called when a window is created for the [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md). Through this callback, the [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md) passes the created window object to the foreground application.
189
190**System capability**: SystemCapability.Ability.AbilityRuntime.Core
191
192**System API**: This is a system API.
193
194**Parameters**
195
196| Name| Type| Read Only| Optional| Description|
197| -------- | -------- | -------- | -------- |  -------- |
198| window | [window.Window](../apis-arkui/js-apis-window-sys.md#window) | Yes| No| Window object created.|
199
200**Example**
201
202```ts
203import { UIServiceExtensionAbility } from '@kit.AbilityKit';
204import { window } from '@kit.ArkUI';
205
206class ServiceExt extends UIServiceExtensionAbility {
207  onWindowDidCreate(window : window.Window){
208    console.log('onWindowDidCreate');
209  }
210}
211```
212
213## UIServiceExtensionAbility.onData
214
215onData(proxy: UIServiceHostProxy, data: Record<string, Object>): void
216
217Callback invoked when data is received.
218
219**System capability**: SystemCapability.Ability.AbilityRuntime.Core
220
221**System API**: This is a system API.
222
223**Parameters**
224
225| Name| Type| Read Only| Optional| Description|
226| -------- | -------- | -------- | -------- |  -------- |
227| proxy | [UIServiceHostProxy](js-apis-inner-application-uiservicehostproxy-sys.md) | Yes| No| Proxy that sends data to the client.|
228| data | Record<string, Object> | Yes| No| Data received.|
229
230**Example**
231
232```ts
233import { UIServiceExtensionAbility, common} from '@kit.AbilityKit';
234
235class ServiceExt extends UIServiceExtensionAbility {
236  onData(proxy : common.UIServiceHostProxy, data : Record<string, Object> ){
237    console.log('onData');
238  }
239}
240```
241
242## UIServiceExtensionAbility.onDestroy
243
244onDestroy(): void
245
246Called to clear resources when this [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md) is destroyed.
247
248**System capability**: SystemCapability.Ability.AbilityRuntime.Core
249
250**System API**: This is a system API.
251
252**Example**
253
254```ts
255import { UIServiceExtensionAbility } from '@kit.AbilityKit';
256
257class ServiceExt extends UIServiceExtensionAbility {
258  onDestroy() {
259    console.log('onDestroy');
260  }
261}
262```
263