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<void> 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