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