1、 HarmoryOS Ability页面的生命周期
2、 @Component自定义组件
3、HarmonyOS 应用开发学习笔记 ets组件生命周期
4、HarmonyOS 应用开发学习笔记 ets组件样式定义 @Styles装饰器:定义组件重用样式 @Extend装饰器:定义扩展组件样式
5、HarmonyOS 应用开发学习笔记 state状态管理概述
6、HarmonyOS应用开发学习笔记 包名、icon图标,应用名修改 UIAbility组件介绍、UIAbility启动模式、UIAbility组件基本用法
7、HarmonyOS应用开发学习笔记 UIAbility组件与UI的数据同步 EventHub、globalThis
8、HarmonyOS应用开发学习笔记 UIAbility组件间交互 UIAbility启动,页面跳转结果回调
概叙
Context是应用中对象的上下文,其提供了应用的一些基础信息,例如resourceManager(资源管理)、applicationInfo(当前应用信息)、dir(应用开发路径)、area(文件分区)等,以及应用的一些基本方法,例如createBundleContext()、getApplicationContext()等。UIAbility组件和各种ExtensionAbility派生类组件都有各自不同的Context类。分别有基类Context、ApplicationContext、AbilityStageContext、UIAbilityContext、ExtensionContext、ServiceExtensionContext等Context。
- 各类Context的继承关系
项目 | 描述 |
---|---|
获取UIAbilityContext | let abilityStageContext = this.context; |
获取AbilityStageContext | let abilityStageContext = this.context; |
获取ApplicationContext | let applicationContext = this.context.getApplicationContext(); |
Context的典型使用场景
1、 获取应用文件路径
import UIAbility from '@ohos.app.ability.UIAbility';
export default class EntryAbility extends UIAbility {
onCreate(want, launchParam) {
let cacheDir = this.context.cacheDir;
let tempDir = this.context.tempDir;
let filesDir = this.context.filesDir;
let databaseDir = this.context.databaseDir;
let bundleCodeDir = this.context.bundleCodeDir;
let distributedFilesDir = this.context.distributedFilesDir;
let preferencesDir = this.context.preferencesDir;
// ...
}
}
- 通过ApplicationContext获取应用级别的应用文件路径,此路径是应用全局信息推荐的存放路径,这些文件会跟随应用的卸载而删除。
项目 | 描述 |
---|---|
bundleCodeDir | <路径前缀>/el1/bundle/ |
cacheDir | <路径前缀>/<加密等级>/base/cache/ |
filesDir | <路径前缀>/<加密等级>/base/files/ |
preferencesDir | <路径前缀>/<加密等级>/base/preferences/ |
tempDir | <路径前缀>/<加密等级>/base/temp/ |
databaseDir | <路径前缀>/<加密等级>/database/ |
distributedFilesDir | <路径前缀>/el2/distributedFiles/ |
- 通过AbilityStageContext、UIAbilityContext、ExtensionContext获取HAP级别的应用文件路径。此路径是HAP相关信息推荐的存放路径,这些文件会跟随HAP的卸载而删除,但不会影响应用级别路径的文件,除非该应用的HAP已全部卸载。
项目 | 描述 |
---|---|
bundleCodeDir | <路径前缀>/el1/bundle/ |
cacheDir | <路径前缀>/<加密等级>/base/haps//cache/ |
filesDir | <路径前缀>/<加密等级>/base/haps//files/ |
preferencesDir | <路径前缀>/<加密等级>/base/haps//preferences/ |
tempDir | <路径前缀>/<加密等级>/base/haps//temp/ |
databaseDir | <路径前缀>/<加密等级>/database// |
distributedFilesDir | <路径前缀>/el2/distributedFiles// |
2、 获取和修改加密分区
上一个场景中,引入了加密等级的概念,通过对Context的area属性的读写来实现获取和设置当前加密分区,支持如下两种加密等级:
- AreaMode.EL1:设备级加密区,设备开机后可访问的数据区。
- AreaMode.EL2:用户级加密区,设备开机,首次输入密码后才能够访问的数据区。
import UIAbility from '@ohos.app.ability.UIAbility';
export default class EntryAbility extends UIAbility {
onCreate(want, launchParam) {
// 存储普通信息前,切换到EL1设备级加密
if (this.context.area === 1) { // 获取area
this.context.area = 0; // 修改area
}
// 存储普通信息
// 存储敏感信息前,切换到EL2用户级加密
if (this.context.area === 0) { // 获取area
this.context.area = 1; // 修改area
}
// 存储敏感信息
}
}