• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.app.ability.UIExtensionAbility (Base Class for ExtensionAbilities with UI)
2
3<!--Kit: Ability Kit-->
4<!--Subsystem: Ability-->
5<!--Owner: @zhangyafei-echo; @xuzhihao666-->
6<!--Designer: @zhangyafei-echo-->
7<!--Tester: @lixueqing513-->
8<!--Adviser: @huipeizi-->
9
10UIExtensionAbility is a base class for ExtensionAbilities with UI in specific scenarios. It provides properties and APIs related to ExtensionAbilities with UI. It inherits from [ExtensionAbility](js-apis-app-ability-extensionAbility.md). 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).
11
12> **NOTE**
13>
14> 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.
15>
16> The APIs of this module can be used only in the stage model.
17
18## Modules to Import
19
20```ts
21import { UIExtensionAbility } from '@kit.AbilityKit';
22```
23
24## UIExtensionAbility
25
26Base class for ExtensionAbilities that has a UI, designed for specific scenarios. It introduces properties and methods associated with UIExtensionAbilities.
27
28### Properties
29
30**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
31
32| Name| Type| Read-only| Optional| Description|
33| -------- | -------- | -------- | -------- | -------- |
34| context | [UIExtensionContext](js-apis-inner-application-uiExtensionContext.md) | No| No| Context of the UIExtensionAbility.|
35
36### onCreate
37
38onCreate(launchParam: AbilityConstant.LaunchParam): void
39
40Called to initialize the service logic when a UIExtensionAbility is being created.
41
42**System capability**: SystemCapability.Ability.AbilityRuntime.Core
43
44**Parameters**
45
46| Name| Type| Mandatory| Description|
47| -------- | -------- | -------- | -------- |
48| 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.|
49
50**Example**
51
52```ts
53// The UIExtensionAbility class does not allow direct inheritance by third-party applications. The child class ShareExtensionAbility is used here as an example.
54import { ShareExtensionAbility, AbilityConstant } from '@kit.AbilityKit';
55
56const TAG: string = '[testTag] ShareExtAbility';
57
58export default class ShareExtAbility extends ShareExtensionAbility {
59  onCreate(launchParam: AbilityConstant.LaunchParam) {
60    console.info(TAG, `onCreate, launchParam: ${JSON.stringify(launchParam)}`);
61  }
62}
63```
64
65### onSessionCreate
66
67onSessionCreate(want: Want, session: UIExtensionContentSession): void
68
69Called when a UIExtensionContentSession instance is created for this UIExtensionAbility.
70
71**System capability**: SystemCapability.Ability.AbilityRuntime.Core
72
73**Parameters**
74
75| Name| Type| Mandatory| Description|
76| -------- | -------- | -------- | -------- |
77| want | [Want](js-apis-app-ability-want.md) | Yes| Want information related to this UIExtensionAbility, including the ability name and bundle name.|
78| session | [UIExtensionContentSession](js-apis-app-ability-uiExtensionContentSession.md) | Yes| UI content information related to this UIExtensionAbility.|
79
80**Example**
81
82```ts
83// The UIExtensionAbility class does not allow direct inheritance by third-party applications. The child class ShareExtensionAbility is used here as an example.
84import { ShareExtensionAbility, UIExtensionContentSession, Want } from '@kit.AbilityKit';
85
86const TAG: string = '[testTag] ShareExtAbility';
87
88export default class ShareExtAbility extends ShareExtensionAbility {
89  onSessionCreate(want: Want, session: UIExtensionContentSession) {
90    console.info(TAG, `onSessionCreate, want: ${JSON.stringify(want)}`);
91  }
92}
93```
94
95### onSessionDestroy
96
97onSessionDestroy(session: UIExtensionContentSession): void
98
99Called when a UIExtensionContentSession instance is destroyed for this UIExtensionAbility.
100
101**System capability**: SystemCapability.Ability.AbilityRuntime.Core
102
103**Parameters**
104
105| Name| Type| Mandatory| Description|
106| -------- | -------- | -------- | -------- |
107| session | [UIExtensionContentSession](js-apis-app-ability-uiExtensionContentSession.md) | Yes| UI content information related to this UIExtensionAbility.|
108
109**Example**
110
111```ts
112// The UIExtensionAbility class does not allow direct inheritance by third-party applications. The child class ShareExtensionAbility is used here as an example.
113import { ShareExtensionAbility, UIExtensionContentSession } from '@kit.AbilityKit';
114
115const TAG: string = '[testTag] ShareExtAbility';
116
117export default class ShareExtAbility extends ShareExtensionAbility {
118  onSessionDestroy(session: UIExtensionContentSession) {
119    console.info(TAG, `onSessionDestroy`);
120  }
121}
122```
123
124### onForeground
125
126onForeground(): void
127
128Called when this UIExtensionAbility is switched from the background to the foreground.
129
130**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
131
132**Example**
133
134```ts
135// The UIExtensionAbility class does not allow direct inheritance by third-party applications. The child class ShareExtensionAbility is used here as an example.
136import { ShareExtensionAbility } from '@kit.AbilityKit';
137
138const TAG: string = '[testTag] ShareExtAbility';
139
140export default class ShareExtAbility extends ShareExtensionAbility {
141  onForeground() {
142    console.info(TAG, `onForeground`);
143  }
144}
145```
146
147### onBackground
148
149onBackground(): void
150
151Called when this UIExtensionAbility is switched from the foreground to the background.
152
153**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
154
155**Example**
156
157```ts
158// The UIExtensionAbility class does not allow direct inheritance by third-party applications. The child class ShareExtensionAbility is used here as an example.
159import { ShareExtensionAbility } from '@kit.AbilityKit';
160
161const TAG: string = '[testTag] ShareExtAbility';
162
163export default class ShareExtAbility extends ShareExtensionAbility {
164  onBackground() {
165    console.info(TAG, `onBackground`);
166  }
167}
168```
169
170### onDestroy
171
172onDestroy(): void | Promise&lt;void&gt;
173
174Called to clear resources when this UIExtensionAbility is destroyed.
175After 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.
176
177**System capability**: SystemCapability.Ability.AbilityRuntime.Core
178
179**Returns**
180
181| Type             | Description                                                        |
182| ----------------- | ------------------------------------------------------------ |
183| void \| Promise\<void> | No return value or a Promise object that returns no value.                           |
184
185**Example**
186
187```ts
188// The UIExtensionAbility class does not allow direct inheritance by third-party applications. The child class ShareExtensionAbility is used here as an example.
189import { ShareExtensionAbility } from '@kit.AbilityKit';
190
191const TAG: string = '[testTag] ShareExtAbility';
192
193export default class ShareExtAbility extends ShareExtensionAbility {
194  onDestroy() {
195    console.info(TAG, `onDestroy`);
196  }
197}
198```
199