HarmonyOS鸿蒙Next Stage模型中有什么办法可以在封装的文件内获取到context
HarmonyOS鸿蒙Next Stage模型中有什么办法可以在封装的文件内获取到context 使用ohos.data.preference这个数据缓存时,想要将获取值设置值删除值封装成方法,但是Stage模型中有什么办法可以在封装的文件内获取到context
第一种方案:context可以作为参数传递过去。第二种方案:context可以先存储在本地,需要的时候获取。这里演示第一种方案:
new PrefrenceUtils(getContext(this) as Context).saveInfo('name','zhangsan').then((res: string)=>{
if (res == 'success') {
console.log('save success!!!!!!!!!')
}
})
new PrefrenceUtils(getContext(this) as Context).getInfo('name','lisi').then((res: dataPreferences.ValueType)=>{
console.log('get success!!!!!!!!!'+res)
})
export default class PrefrenceUtils {
context: Context
constructor(context: Context) {
this.context = context
}
saveInfo(key: string, value: number | string | boolean): Promise<string> {
return new Promise((resolve,reject)=>{
let promise = dataPreferences.getPreferences(this.context, 'myStore');
console.log('promise---',promise)
promise.then((object: dataPreferences.Preferences) => {
object.put(key, value, (err: BusinessError) => {
if (err) {
reject('fail')
} else {
resolve('success')
}
})
console.info("Succeeded in getting preferences.");
}).catch((err: BusinessError) => {
reject(err)
console.error("Failed to get preferences. code ="+err.code+", message ="+err.message);
})
})
}
saveInfoSync(key: string, value: dataPreferences.ValueType) {
let promise = dataPreferences.getPreferences(this.context, 'myStore');
console.log('promise---',promise)
promise.then((object: dataPreferences.Preferences) => {
object.putSync(key, value)
console.info("Succeeded in getting preferences.");
}).catch((err: BusinessError) => {
console.error("Failed to get preferences. code ="+err.code+", message ="+err.message);
})
}
getInfo(key: string,defaultValue: dataPreferences.ValueType): Promise<dataPreferences.ValueType> {
return new Promise((resolve,reject)=>{
let promise = dataPreferences.getPreferences(this.context, 'myStore');
console.log('promise---',promise)
promise.then((object: dataPreferences.Preferences) => {
object.get(key, defaultValue, (err: BusinessError, val: dataPreferences.ValueType) => {
if (err) {
reject('fail')
} else {
resolve(val)
}
})
console.info("Succeeded in getting preferences.");
}).catch((err: BusinessError) => {
reject(err)
console.error("Failed to get preferences. code ="+err.code+", message ="+err.message);
})
})
}
getInfoSync(key: string,defaultValue: dataPreferences.ValueType): Promise<dataPreferences.ValueType> {
return new Promise((resolve,reject)=>{
let promise = dataPreferences.getPreferences(this.context, 'myStore');
console.log('promise---',promise)
promise.then((object: dataPreferences.Preferences) => {
resolve(object.getSync(key, defaultValue))
console.info("Succeeded in getting preferences.");
}).catch((err: BusinessError) => {
reject(err)
console.error("Failed to get preferences. code ="+err.code+", message ="+err.message);
})
})
}
}
更多关于HarmonyOS鸿蒙Next Stage模型中有什么办法可以在封装的文件内获取到context的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在 windowcreate 的时候存到 AppStorage 里
import { common } from ‘@kit.AbilityKit’;
export class PreferenceManager { private preferences?: preferences.Preferences; private context = this.getContext() as common.UIAbilityContext; … }
在HarmonyOS的Next Stage模型中,若要在封装的文件内获取到context,可以通过AbilityContext或ApplicationContext来实现。AbilityContext通常用于与Ability相关的操作,而ApplicationContext则用于与应用生命周期相关的操作。
在Ability中,可以直接通过this.context获取到AbilityContext。如果是在其他类或方法中,可以通过构造函数或方法参数将context传递进去。例如:
class MyClass {
private context: AbilityContext;
constructor(context: AbilityContext) {
this.context = context;
}
public someMethod() {
// 使用this.context进行操作
}
}
如果是在UI组件中,可以通过getContext()方法获取到context。例如:
class MyComponent extends Component {
public someMethod() {
const context = this.getContext();
// 使用context进行操作
}
}
此外,如果需要在全局范围内获取ApplicationContext,可以通过globalThis.abilityContext或globalThis.applicationContext来获取。
const context = globalThis.abilityContext; // 或 globalThis.applicationContext
这些方法可以帮助你在封装的文件内获取到所需的context对象。
在HarmonyOS的Next Stage模型中,可以通过AbilityContext获取上下文。首先,确保你的类继承自Ability或PageAbility,然后使用getContext()方法获取AbilityContext。例如:
AbilityContext context = getContext();
如果是在其他非Ability类中,可以通过构造函数或方法参数传递AbilityContext。例如:
public class MyClass {
private AbilityContext context;
public MyClass(AbilityContext context) {
this.context = context;
}
}
这样可以确保在任何封装的文件内都能访问到context。

