HarmonyOS鸿蒙Next中Stage模型和FA模型获取Context的方式

HarmonyOS鸿蒙Next中Stage模型和FA模型获取Context的方式 Stage模型和FA模型获取Context的方式

FA Context模块提供了ability或application的上下文的能力,包括允许访问特定于应用程序的资源、请求和验证权限等。获取context方式如下代码所示:

import featureAbility from '@ohos.ability.featureAbility'
let context = featureAbility.getContext();

Stage 在stage模型中。context提供了应用的一些基础信息,例如resourceManager(资源管理)、applicationInfo(当前应用信息)、dir(应用开发路径)、area(文件分区)等,以及应用的一些基本方法,例如createBundleContext()、getApplicationContext()等。UIAbility组件和各种ExtensionAbility派生类组件都有各自不同的Context类。比较常用的有AbilityContext和在eTS页面中访问Context,

Stage模型下,每个Ability中都包含了一个Context属性

在继承Ability的类中通过this.context就可以获取AbilityContext,从而操作Ability的方法(如startAbility、connectAbility等)

import { Ability } from '@ohos.application.Ability'

export default class MainAbility extends Ability {
    onCreate(want, launchParam) {
   let context = this.context;
    }
    onWindowStageCreate(windowStage) {
        let context = this.context;
    }
    ...
};

如果需要在UIAbility获取上下文,也是一样的方法。

import { UIAbility } from '@ohos.app.ability.UIAbility';

export default class EntryAbility extends UIAbility {
    onCreate(want, launchParam) {
        // 获取UIAbility实例的上下文
        let context = this.context;

        // ...
    }
}

在eTS页面中访问Context Stage模型支持了通过context获取resourceManager对象的方式,再调用其内部获取资源的接口,无需再导入包,此方式FA模型不适用。

// 获取当前component关联的Context
let context = getContext(this) as any

当在页面中获取UIAbility实例的上下文信息,则包括导入依赖资源context模块和在组件中定义一个context变量两个部分。

import common from '@ohos.app.ability.common';

@Entry
@Component
struct Index {
  private context = getContext(this) as common.UIAbilityContext;

  startAbilityTest() {
    let want = {
      // Want参数信息
    };
    this.context.startAbility(want);
  }

  // 页面展示
  build() {
    // ...
  }
}

更多关于HarmonyOS鸿蒙Next中Stage模型和FA模型获取Context的方式的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

我也是这么写的,但是handler是undefined,也无法跳转。

更多关于HarmonyOS鸿蒙Next中Stage模型和FA模型获取Context的方式的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


 private context = getContext(this) as common.UIAbilityContext;  我就是这么写的,但是得到的context还是undefined.这个有解决么?

我也遇到同样的问题,

在HarmonyOS鸿蒙Next中,Stage模型和FA模型获取Context的方式有所不同:

  1. Stage模型:

    • 通过AbilityStage类获取Context。AbilityStage是Stage模型的核心类,提供了getContext()方法,可以直接获取当前Ability的Context。
    • 示例:Context context = getAbilityStage().getContext();
  2. FA模型:

    • 通过Ability类获取Context。在FA模型中,Ability类提供了getContext()方法,可以直接获取当前Ability的Context。
    • 示例:Context context = getContext();

两种模型都提供了便捷的方式获取Context,开发者可以根据具体模型选择合适的方法。

回到顶部