1# @ohos.app.ability.UIExtensionAbility (Base Class for ExtensionAbilities with UI)
2
3**UIExtensionAbility**, inherited from [ExtensionAbility](js-apis-app-ability-extensionAbility.md), is a base class for ExtensionAbilities with UI in specific scenarios. It provides properties and APIs related to ExtensionAbilities with UI. You cannot inherit from this base class. For details about the inheritance relationship of each ability, see [Inheritance Relationship](./js-apis-app-ability-ability.md#ability-inheritance-relationship).
4
5> **NOTE**
6>
7> The initial APIs of this module are supported since API version 10. Newly added APIs will be marked with a superscript to indicate their earliest API version.
8>
9> The APIs of this module can be used only in the stage model.
10
11## Modules to Import
12
13```ts
14import { UIExtensionAbility } from '@kit.AbilityKit';
15```
16
17## Properties
18
19**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
20
21| Name| Type| Read-only| Optional| Description|
22| -------- | -------- | -------- | -------- | -------- |
23| context | [UIExtensionContext](js-apis-inner-application-uiExtensionContext.md) | No| No| Context of the UIExtensionAbility.|
24
25## UIExtensionAbility.onCreate
26
27onCreate(launchParam: AbilityConstant.LaunchParam): void
28
29Called to initialize the service logic when a UIExtensionAbility is being created.
30
31**System capability**: SystemCapability.Ability.AbilityRuntime.Core
32
33| Name| Type| Mandatory| Description|
34| -------- | -------- | -------- | -------- |
35| launchParam<sup>12+</sup> | [AbilityConstant.LaunchParam](js-apis-app-ability-abilityConstant.md#launchparam) | Yes| Parameters for starting the UIExtensionAbility, and the reason for the last abnormal exit.|
36
37**Example**
38
39```ts
40import { UIExtensionAbility, AbilityConstant } from '@kit.AbilityKit';
41
42const TAG: string = '[testTag] UIExtAbility';
43
44export default class UIExtAbility extends UIExtensionAbility {
45  onCreate(launchParam: AbilityConstant.LaunchParam) {
46    console.info(TAG, `onCreate`);
47    console.log(`onCreate, launchParam: ${JSON.stringify(launchParam)}`);
48  }
49}
50```
51
52## UIExtensionAbility.onSessionCreate
53
54onSessionCreate(want: Want, session: UIExtensionContentSession): void
55
56Called when a **UIExtensionContentSession** instance is created for this UIExtensionAbility.
57
58**System capability**: SystemCapability.Ability.AbilityRuntime.Core
59
60**Parameters**
61
62| Name| Type| Mandatory| Description|
63| -------- | -------- | -------- | -------- |
64| want | [Want](js-apis-app-ability-want.md) | Yes| Want information related to this UIExtensionAbility, including the ability name and bundle name.|
65| session | [UIExtensionContentSession](js-apis-app-ability-uiExtensionContentSession.md) | Yes| UI content information related to this UIExtensionAbility.|
66
67**Example**
68
69```ts
70import { UIExtensionAbility, UIExtensionContentSession, Want } from '@kit.AbilityKit';
71
72const TAG: string = '[testTag] UIExtAbility';
73
74export default class UIExtAbility extends UIExtensionAbility {
75  onSessionCreate(want: Want, session: UIExtensionContentSession) {
76    console.info(TAG, `onSessionCreate, want: ${JSON.stringify(want)}`);
77  }
78}
79```
80
81## UIExtensionAbility.onSessionDestroy
82
83onSessionDestroy(session: UIExtensionContentSession): void
84
85Called when a **UIExtensionContentSession** instance is destroyed for this UIExtensionAbility.
86
87**System capability**: SystemCapability.Ability.AbilityRuntime.Core
88
89**Parameters**
90
91| Name| Type| Mandatory| Description|
92| -------- | -------- | -------- | -------- |
93| session | [UIExtensionContentSession](js-apis-app-ability-uiExtensionContentSession.md) | Yes| UI content information related to this UIExtensionAbility.|
94
95**Example**
96
97```ts
98import { UIExtensionAbility, UIExtensionContentSession } from '@kit.AbilityKit';
99
100const TAG: string = '[testTag] UIExtAbility';
101
102export default class UIExtAbility extends UIExtensionAbility {
103  onSessionDestroy(session: UIExtensionContentSession) {
104    console.info(TAG, `onSessionDestroy`);
105  }
106}
107```
108
109## UIExtensionAbility.onForeground
110
111onForeground(): void
112
113Called when this UIExtensionAbility is switched from the background to the foreground.
114
115**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
116
117**Example**
118
119```ts
120import { UIExtensionAbility } from '@kit.AbilityKit';
121
122const TAG: string = '[testTag] UIExtAbility';
123
124export default class UIExtAbility extends UIExtensionAbility {
125  onForeground() {
126    console.info(TAG, `onForeground`);
127  }
128}
129```
130
131## UIExtensionAbility.onBackground
132
133onBackground(): void
134
135Called when this UIExtensionAbility is switched from the foreground to the background.
136
137**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
138
139**Example**
140
141```ts
142import { UIExtensionAbility } from '@kit.AbilityKit';
143
144const TAG: string = '[testTag] UIExtAbility';
145
146export default class UIExtAbility extends UIExtensionAbility {
147  onBackground() {
148    console.info(TAG, `onBackground`);
149  }
150}
151```
152
153## UIExtensionAbility.onDestroy
154
155onDestroy(): void | Promise&lt;void&gt;
156
157**Returns**
158
159| Type             | Description                                                        |
160| ----------------- | ------------------------------------------------------------ |
161| Promise\<void> | Promise that returns no value.                           |
162
163Called to clear resources when this UIExtensionAbility is destroyed.
164After the **onDestroy()** lifecycle callback is executed, the application may exit. Consequently, the asynchronous function (for example, asynchronously writing data to the database) in **onDestroy()** may fail to be executed. You can use the asynchronous lifecycle to ensure that the subsequent lifecycle continues only after the asynchronous function in **onDestroy()** finishes the execution.
165
166**System capability**: SystemCapability.Ability.AbilityRuntime.Core
167
168**Example**
169
170```ts
171import { UIExtensionAbility } from '@kit.AbilityKit';
172
173const TAG: string = '[testTag] UIExtAbility';
174
175export default class UIExtAbility extends UIExtensionAbility {
176  onDestroy() {
177    console.info(TAG, `onDestroy`);
178  }
179}
180```
181