鸿蒙开发中,如何获取上下文Context?

鸿蒙开发中该如何获取上下文Context?

阅读 618
2 个回答

在 AbilitySlice和Ability 中可以直接通过 getContext() 方法获取 Context。
自定义一个组件时,通常可以在组件的构造函数中传入 Context

import ohos.agp.components.Component;
import ohos.agp.components.ComponentContainer;
import ohos.agp.render.Canvas;
import ohos.agp.render.Paint;
import ohos.rpc.RemoteException;

public class MyCustomComponent extends Component {
    private ohos.rpc.RemoteException context;

    public MyCustomComponent(ohos.rpc.RemoteException context) {
        super(context);
        this.context = context;
        // 可以使用获取到的Context进行后续操作
    }

    @Override
    public void onDraw(Component component, Canvas canvas) {
        super.onDraw(component, canvas);
        // 使用Context进行绘制等操作
    }
}

在工具类里获取 Context
工具类里获取 Context 通常可以采用静态方法或者单例模式,在初始化时传入 Context

import ohos.rpc.RemoteException;

public class MyUtils {
    private static ohos.rpc.RemoteException context;

    public static void init(ohos.rpc.RemoteException context) {
        MyUtils.context = context;
    }

    public static void doSomething() {
        if (context != null) {
            // 使用Context进行操作
        }
    }
}

在 Ability 或者 AbilitySlice 中初始化工具类:
MyUtils.init(getContext());

Context是应用中对象的上下文,其提供了应用的一些基础信息,例如resourceManager(资源管理)、applicationInfo(当前应用信息)、dir(应用文件路径)、area(文件分区)等,以及应用的一些基本方法,例如createBundleContext()、getApplicationContext()等。UIAbility组件和各种ExtensionAbility派生类组件都有各自不同的Context类。分别有基类Context、ApplicationContext、AbilityStageContext、UIAbilityContext、ExtensionContext、ServiceExtensionContext等Context。
各类Context获取参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进