HarmonyOS 鸿蒙Next中获取全局Context对象
HarmonyOS 鸿蒙Next中获取全局Context对象 在工具类等非UI组件环境中如何获取全局Context对象
3 回复
- 定义全局上下文对象,代码案例参考如下:
import { common } from "@kit.AbilityKit";
export class GlobalContext {
private static context: common.UIAbilityContext;
public static initContext(context: common.UIAbilityContext): void {
GlobalContext.context = context;
}
public static getContext(): common.UIAbilityContext {
return GlobalContext.context;
}
}
- 保存全局Context
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate');
// 初始化全局Context
GlobalContext.initContext(this.context);
}
}
- 使用全局Context
import { preferences } from "@kit.ArkData";
import { GlobalContext } from "./GlobalContext";
export class Util {
public static testFunc() {
let context = GlobalContext.getContext()
// todo
}
}
更多关于HarmonyOS 鸿蒙Next中获取全局Context对象的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,可通过AbilityStage或Ability的context属性获取全局Context。对于工具类等非UI组件环境,建议使用以下方式:
- 在AbilityStage中获取:
export default class MyAbilityStage extends AbilityStage {
onCreate() {
const context = this.context;
// 保存为全局变量或通过依赖注入传递
}
}
- 在EntryAbility中获取:
export default class EntryAbility extends Ability {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
const context = this.context;
// 初始化全局工具类时传入
}
}
- 通过UIAbilityContext获取:
import UIAbility from '@ohos.app.ability.UIAbility';
// 在Ability中
const context: UIAbilityContext = this.context;
注意:应避免在工具类中直接持有Context引用,建议通过参数传递或使用依赖注入框架管理。Context的生命周期与Ability绑定,不当使用可能导致内存泄漏。


