在鸿蒙(HarmonyOS)开发中,context、uiContext、UIAbilityContext是三个与上下文相关的概念,它们在不同的场景下有不同的用途和获取方式。

这三个context都继承自BaseContext.context适用于获取应用的全局信息,而uicontext主要用于UI组件的上下文获取。

1.Context

  • 定义:Context表示当前Ability的上下文对象,提供了ability或application的上下文的能力,包括访问特定应用程序的资源等。。
  • 获取方式:可以通过调用getContext接口获取。
  • 具体类型:在UIAbility窗口中的页面调用该接口时,返回类型为UIAbilityContext;在ExtensionAbility窗口中的页面调用该接口时,返回类型为ExtensionContext。
  • 使用场景:适用于需要获取当前Ability上下文的场景。
  • API实例
    • getContext(component?: Object): Context
    • 返回值类型为Context,具体类型取决于当前Ability。
    • 当前自定义组件的实例。未传入component或传入的参数类型非法,则返回默认上下文。默认上下文是指通过追溯当前方法的调用链所跟踪到的Context。在异步调用的回调方法中使用该接口,或者该接口的起始调用不在当前页面,将可能导致无法跟踪到该实例的Context,则会返回undefined
    • *官方文档建议**:直接使用getContext可能导致实例不明确的问题,建议使用getUIContext获取UIContext实例,并使用getHostContext调用绑定实例的getContext。getUIContext().getHostContext()

2.UIContext

  • 定义:UIContext是用于处理与UI相关的上下文。它与具体的UI实例相关联,可以获取当前UI实例的信息,并在其上进行操作。例如,通过uicontext可以获取当前UI实例的焦点控制器,从而进行焦点管理。
  • 获取方式:需要先使用ohos.window中的getUIContext()方法获取UIContext实例,再通过此实例调用对应方法。
  • 具体类型:UIContext对象用于处理UI相关的操作,如创建并弹出半模态页面、获取共享的LocalStorage实例等。
  • 使用场景:适用于需要处理UI相关操作的场景。
  • API实例
    • getUIContext(): 获取UIContext实例
    • getSharedLocalStorage(): 获取当前stage共享的LocalStorage实例

3.UIAbilityContext

  • 定义:UIAbilityContext继承自Context,是UIAbility窗口中的页面调用getContext接口时返回的Context类型。
  • 获取方式:通过调用getContext接口获取。
  • 使用场景:适用于在UIAbility窗口中需要获取上下文的场景。
  • API实例
    • getContext(): Context
    • 返回值类型为UIAbilityContext。
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐