作者:坚果 公众号:"大前端之旅" 华为HDE,润和软件技术专家,InfoQ签约作者,OpenHarmony布道师,CSDN博客专家,开源项目GVA成员之一。
FA
Context模块提供了ability或application的上下文的能力,包括允许访问特定于应用程序的资源、请求和验证权限等。获取context方式如下代码所示:
代码语言:javascript复制import featureAbility from '@ohos.ability.featureAbility'、
let context = featureAbility.getContext();
Stage
在stage模型中。context提供了应用的一些基础信息,例如resourceManager(资源管理)、applicationInfo(当前应用信息)、dir(应用开发路径)、area(文件分区)等,以及应用的一些基本方法,例如createBundleContext()、getApplicationContext()等。UIAbility组件和各种ExtensionAbility派生类组件都有各自不同的Context类。比较常用的有AbilityContext和在eTS页面中访问Context,
Stage模型下,每个Ability中都包含了一个Context属性
在继承Ability的类中通过this.context
就可以获取AbilityContext
,从而操作Ability的方法(如startAbility、connectAbility等)
import Ability from '@ohos.application.Ability'
export default class MainAbility extends Ability {
onCreate(want, launchParam) {
let context = this.context;
}
onWindowStageCreate(windowStage) {
let context = this.context;
}
...
};
如果需要在UIAbility获取上下文,也是一样的方法。
代码语言:javascript复制import UIAbility from '@ohos.app.ability.UIAbility';
export default class EntryAbility extends UIAbility {
onCreate(want, launchParam) {
// 获取UIAbility实例的上下文
let context = this.context;
// ...
}
}
- 在eTS页面中访问Context
Stage模型支持了通过context获取resourceManager对象的方式,再调用其内部获取资源的接口,无需再导入包,此方式FA模型不适用。
代码语言:javascript复制// 获取当前component关联的Context
let context = getContext(this) as any
当在页面中获取UIAbility实例的上下文信息,则包括导入依赖资源context模块和在组件中定义一个context变量两个部分。
代码语言:javascript复制import common from '@ohos.app.ability.common';
@Entry
@Component
struct Index {
private context = getContext(this) as common.UIAbilityContext;
startAbilityTest() {
let want = {
// Want参数信息
};
this.context.startAbility(want);
}
// 页面展示
build() {
// ...
}
}