HarmonyOS 鸿蒙Next中获取全局Context对象

HarmonyOS 鸿蒙Next中获取全局Context对象 在工具类等非UI组件环境中如何获取全局Context对象

3 回复
  1. 定义全局上下文对象,代码案例参考如下:
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;
  }
}
  1. 保存全局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);
  }
}
  1. 使用全局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中,可通过UIAbilityContext获取全局Context。在UIAbility中使用this.context访问,或在其他模块通过AbilityStagegetContext()方法获取。对于ExtensionAbility,使用对应的ExtensionContext。全局Context提供应用配置、资源管理及系统服务调用等核心功能。

在HarmonyOS Next中,可通过AbilityStageAbilitycontext属性获取全局Context。对于工具类等非UI组件环境,建议使用以下方式:

  1. 在AbilityStage中获取
export default class MyAbilityStage extends AbilityStage {
  onCreate() {
    const context = this.context;
    // 保存为全局变量或通过依赖注入传递
  }
}
  1. 在EntryAbility中获取
export default class EntryAbility extends Ability {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
    const context = this.context;
    // 初始化全局工具类时传入
  }
}
  1. 通过UIAbilityContext获取
import UIAbility from '@ohos.app.ability.UIAbility';

// 在Ability中
const context: UIAbilityContext = this.context;

注意:应避免在工具类中直接持有Context引用,建议通过参数传递或使用依赖注入框架管理。Context的生命周期与Ability绑定,不当使用可能导致内存泄漏。

回到顶部