1# getContext 2 3如果需要在页面中获得当前Ability的Context,可调用getContext接口获取当前页面关联的UIAbilityContext或ExtensionContext。 4 5> **说明:** 6> - 该接口从API version 9开始支持,从API version 18开始废弃,建议使用[UIContext](js-apis-arkui-UIContext.md#uicontext)中的[getHostContext](js-apis-arkui-UIContext.md#gethostcontext12)替代。 7> - 该接口仅限Stage模型使用。 8 9## getContext<sup>(deprecated)</sup> 10 11getContext(component?: Object):Context 12 13获取与页面上下文组件关联的Context对象。 14 15> **说明:** 16> 17> 从API version 18开始废弃,建议使用[UIContext](js-apis-arkui-UIContext.md#uicontext)中的[getHostContext](js-apis-arkui-UIContext.md#gethostcontext12)替代。 18> 19> 从API version 12开始,可以通过使用[UIContext](js-apis-arkui-UIContext.md#uicontext)中的[getHostContext](js-apis-arkui-UIContext.md#gethostcontext12)来明确UI的执行上下文。 20 21**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 22 23**系统能力:** SystemCapability.ArkUI.ArkUI.Full 24 25**参数:** 26 27| 参数名 | 类型 | 必填 | 说明 | 28| ------ | ----------- | ---- | ------------------------------- | 29| component | Object | 否 | 当前自定义组件的实例。未传入component或传入的参数类型非法,则返回默认上下文。默认上下文是指通过追溯当前方法的调用链所跟踪到的Context。在异步调用的回调方法中使用该接口,或者该接口的起始调用不在当前页面,将可能导致无法跟踪到该实例的Context,则会返回undefined。 | 30 31**返回值:** 32 33| 类型 | 说明 | 34| ------ | ------------------------------- | 35| [Context](../../application-models/application-context-stage.md#应用上下文context) | 返回当前组件所在Ability的Context,Context的具体类型为当前Ability关联的Context对象。例如:在UIAbility窗口中的页面调用该接口,返回类型为UIAbilityContext。在ExtensionAbility窗口中的页面调用该接口,返回类型为ExtensionContext。 | 36 37**示例:** 38 39在UIAbility中通过windowStage.loadContent加载具体页面。 40 41> **说明:** 42> 43> 直接使用getContext可能导致实例不明确的问题,建议使用[getUIContext](js-apis-arkui-UIContext.md#uicontext)获取UIContext实例,并使用[getHostContext](js-apis-arkui-UIContext.md#gethostcontext12)调用绑定实例的getContext。 44 45```ts 46// EntryAbility.ets 47import { UIAbility, AbilityConstant, Want } from '@kit.AbilityKit'; 48import { hilog } from '@kit.PerformanceAnalysisKit'; 49import { window } from '@kit.ArkUI'; 50 51export default class EntryAbility extends UIAbility { 52 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { 53 hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); 54 } 55 56 onDestroy() { 57 hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy'); 58 } 59 60 onWindowStageCreate(windowStage: window.WindowStage) { 61 hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); 62 63 windowStage.loadContent('pages/Index', (err, data) => { 64 if (err.code) { 65 hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); 66 return; 67 } 68 hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? ''); 69 }); 70 } 71 72 onWindowStageDestroy() { 73 hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); 74 } 75 76 onForeground() { 77 hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground'); 78 } 79 80 onBackground() { 81 hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground'); 82 } 83} 84``` 85在具体的Index.ets中可以通过getContext接口获取Context上下文,本示例返回的Context类型为UIAbilityContext。 86 87```ts 88//pages/Index.ets 89@Entry 90@Component 91struct Index { 92 @State message: string = 'Hello World' 93 94 build() { 95 Row() { 96 Column() { 97 Text(this.message) 98 .fontSize(50) 99 .fontWeight(FontWeight.Bold) 100 .onClick(() => { 101 // 建议使用this.getUIContext().getHostContext() 102 let context : Context = getContext(this) as Context 103 console.info("CacheDir:" + context.cacheDir) 104 }) 105 } 106 .width('100%') 107 } 108 .height('100%') 109 } 110} 111``` 112