Context是應用中物件的上下文,其提供了應用的一些基礎資訊,例如resourceManager(資源管理)、applicationInfo(當前應用資訊)、dir(應用檔案路徑)、area(檔案分割槽)等,以及應用的一些基本方法,例如createBundleContext()、getApplicationContext()等。UIAbility元件和各種ExtensionAbility派生類元件都有各自不同的Context類。分別有基類Context、ApplicationContext、AbilityStageContext、UIAbilityContext、ExtensionContext、ServiceExtensionContext等Context。
Context繼承關係
獲取UIAbilityContext
每個UIAbility中都包含了一個Context屬性,提供操作應用元件、獲取應用元件的配置資訊等能力
import { UIAbility, AbilityConstant, Want } from '@kit.AbilityKit';
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
let uiAbilityContext = this.context;
//...
}
}
獲取特定場景ExtensionContext
以ServiceExtensionContext為例,表示後臺服務的上下文環境,繼承自ExtensionContext,提供後臺服務相關的介面能力。
import { ServiceExtensionAbility, Want } from '@kit.AbilityKit';
export default class ServiceExtAbility extends ServiceExtensionAbility {
onCreate(want: Want) {
let serviceExtensionContext = this.context;
//...
}
}
獲取AbilityStageContext
Module級別的Context,和基類Context相比,額外提供HapModuleInfo、Configuration等資訊
import { AbilityStage } from '@kit.AbilityKit';
export default class MyAbilityStage extends AbilityStage {
onCreate(): void {
let abilityStageContext = this.context;
//...
}
}
獲取ApplicationContext
應用級別的Context。ApplicationContext在基類Context的基礎上提供了訂閱應用內應用元件的生命週期的變化、訂閱系統記憶體變化和訂閱應用內系統環境的變化的能力,在UIAbility、ExtensionAbility、AbilityStage中均可以獲取。
import { UIAbility, AbilityConstant, Want } from '@kit.AbilityKit';
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
let applicationContext = this.context.getApplicationContext();
//...
}
}