• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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