HarmonyOS鸿蒙Next中封装一个公用的getContext()
HarmonyOS鸿蒙Next中封装一个公用的getContext() 封装一个公用的export const context = getContext(),有例子嘛
3 回复
import { Context } from '@kit.AbilityKit';
export class GlobalContext {
private constructor() {}
private static instance: GlobalContext;
private context:Context | undefined
public static getInstance(): GlobalContext {
if (!GlobalContext.instance) {
GlobalContext.instance = new GlobalContext();
}
return GlobalContext.instance;
}
setContext(contex:Context){
this.context = contex
}
getContext(): Context | undefined {
return this.context
}
}
在EntryAbility初始化设置context
async onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): Promise<void> {
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
GlobalContext.getInstance().setContext(getContext(this));
}
更多关于HarmonyOS鸿蒙Next中封装一个公用的getContext()的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,封装一个公用的getContext()方法可以通过以下方式实现。首先,创建一个单例类或工具类来管理全局的Context对象。可以使用Ability或AbilitySlice中的getContext()方法来获取当前上下文的引用,并将其存储在全局变量中。例如:
// GlobalContext.ts
export class GlobalContext {
private static instance: GlobalContext;
private context: Context | null = null;
private constructor() {}
public static getInstance(): GlobalContext {
if (!GlobalContext.instance) {
GlobalContext.instance = new GlobalContext();
}
return GlobalContext.instance;
}
public setContext(context: Context): void {
this.context = context;
}
public getContext(): Context | null {
return this.context;
}
}
在Ability或AbilitySlice中初始化时,调用setContext()方法设置全局Context:
// MainAbility.ts
import { GlobalContext } from './GlobalContext';
export default class MainAbility extends Ability {
onCreate(want, launchParam) {
GlobalContext.getInstance().setContext(this.context);
}
}
在其他地方需要获取Context时,调用GlobalContext.getInstance().getContext()即可。这种方式确保了全局Context的唯一性和可访问性。
在HarmonyOS(鸿蒙)Next中,可以通过封装一个公用的getContext()方法来获取全局上下文。以下是一个简单的实现示例:
public class ContextUtil {
private static Context context;
public static void init(Context appContext) {
context = appContext;
}
public static Context getContext() {
if (context == null) {
throw new IllegalStateException("ContextUtil未初始化,请先调用init方法");
}
return context;
}
}
使用时,首先在应用启动时调用ContextUtil.init()初始化上下文,之后即可通过ContextUtil.getContext()获取全局上下文。

