明白鸿蒙app 开辟中的 context

打印 上一主题 下一主题

主题 660|帖子 660|积分 1980

是什么

Context是应用中对象的上下文,其提供了应用的一些基础信息,例如resourceManager(资源管理)、applicationInfo(当前应用信息)、dir(应用文件路径)、area(文件分区)等,以及应用的一些基本方法,例如createBundleContext()、getApplicationContext()等。UIAbility组件和各种ExtensionAbility派生类组件都有各自不同的Context类。分别有基类Context、ApplicationContext、AbilityStageContext、UIAbilityContext、ExtensionContext、ServiceExtensionContext等Context。(应用上下文(Context)是应用步伐的全局信息的接口。它是一个抽象类,提供了访问应用步伐环境的方法和资源的方法      总而言之,Context提供了访问应用步伐资源和服务的接口。


  • 各类Context的继承关系

各类Context的持有关系
 
如何获取 context 

在具体的页面中获取  context    就使用  getcontext(this)

假如必要在页面中得到当前Ability的Context,可调用getContext接口获取当前页面关联的UIAbilityContext或ExtensionContext。
  1. //pages/Index.ets
  2. @Entry
  3. @Component
  4. struct Index {
  5.   @State message: string = 'Hello World'
  6.   build() {
  7.     Row() {
  8.       Column() {
  9.         Text(this.message)
  10.           .fontSize(50)
  11.           .fontWeight(FontWeight.Bold)
  12.           .onClick(() => {
  13.             // 建议使用this.getUIContext().getHostContext()
  14.             let context : Context = getContext(this) as Context
  15.             console.info("CacheDir:" + context.cacheDir)
  16.           })
  17.       }
  18.       .width('100%')
  19.     }
  20.     .height('100%')
  21.   }
  22. }
复制代码
 
说明:假如必要在页面中得到当前Ability的Context,可调用getContext接口获取当前页面关联的UIAbilityContext 
getContext传入this和不传入有什么区别

getContext参数及类型:getContext(component?: Object):Context。
Context传入参数component的作用是指定一个组件对象,getContext函数会返回这个组件的上下文对象Context。假如不传入参数,则默认返回当前组件的上下文对象。上下文对象Context包含了组件的状态、属性、方法等信息,可以在组件内部使用。
在某些场景下,大概必要在组件内部调用其他组件的方法或获取其他组件的属性,此时可以通过getContext(this)获取到当前组件的上下文对象,然后使用该上下文对象调用其他组件的方法或获取其他组件的属性
获取UIAbility的上下文信息

UIAbility类拥有自身的上下文信息,该信息为UIAbilityContext类的实例,UIAbilityContext类拥有abilityInfo、currentHapModuleInfo等属性。通过UIAbilityContext可以获取UIAbility的相关设置信息,如包代码路径、Bundle名称、Ability名称和应用步伐必要的环境状态等属性信息,以及可以获取操作UIAbility实例的方法(如startAbility()、connectServiceExtensionAbility()、terminateSelf()等)。
假如必要在页面中得到当前Ability的Context,可调用getContext接口获取当前页面关联的UIAbilityContext或ExtensionContext。


  • UIAbility中可以通过this.context获取UIAbility实例的上下文信息。
    1. import { UIAbility, AbilityConstant, Want } from '@kit.AbilityKit';
    2. export default class EntryAbility extends UIAbility {
    3.   onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    4.     // 获取UIAbility实例的上下文
    5.     let context = this.context;
    6. //将 context   存进去
    7. AppStorage.setOrCreate('EntryAbilityContext', this.context);
    8.     // ...
    9.   }
    10. }
    复制代码
    留意 !!!!在生明的类里面  拿到context  方式  最好使用这种方式  
  1. export class appOptionModel {
  2. //  使用在 entry  里面存储的   EntryAbilityContext   这样才行  
  3. context: common.UIAbilityContext | undefined = AppStorage.get('EntryAbilityContext'); // 获取UIAbilityContext
  4. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

河曲智叟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表