OH_ArkUI_RunTaskInScope跨实例组件操作示例

介绍

此示例展示了如何使用OH_ArkUI_RunTaskInScope接口实现多窗口场景下的跨实例组件操作。通过动态切换执行上下文,确保在页面PageB中安全地修改页面PageA创建的组件属性,避免因实例上下文不匹配导致的接口调用异常。

示例文档

在NDK中保证多实例场景功能正常

使用说明

  1. 安装编译生成的hap包,并启动应用程序;
  2. 进入首页,会看到一个pageOneButton按钮,选择First选项,进入页面;
  3. 点击ModifyFirstPage按钮修改首页按钮属性;
  4. 返回首页会看到一个pageOneButton按钮变成了success按钮

工程目录

entry/src/main/cpp/
├── CMakeLists.txt (CMake脚本)
└── napi_init.cpp

entry/src/main/ets/
|---entryability
|---pages
|   |---Firstpage_index.ets
|   |---Index.ets
|   |---Secondpage_index.ets     

entry/src/ohosTest/
|---ets
|   |---interface.test.ets                 // 示例代码测试代码

具体实现

  1. 在目标页面创建组件时设置唯一ID,便于跨实例查找定位;

  2. 在另一页面通过OH_ArkUI_NodeUtils_GetAttachedNodeHandleById获取目标组件句柄;

  3. 使用OH_ArkUI_GetContextByNode获取组件对应的上下文实例;

  4. 调用OH_ArkUI_RunTaskInScope在正确的上下文范围内执行组件属性设置操作;

相关权限

不涉及

依赖

不涉及

约束和限制

  1. 本示例支持标准系统上运行,支持设备:华为手机;

  2. 本示例支持API22版本SDK,版本号:6.0.2.54;

  3. 本示例已支持使DevEco Studio 支持API22版本SDK,版本号:6.0.0.55,镜像版本号:OpenHarmony_6.0.0.55编译运行;

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo ArkUISample/NdkScopeTask > .git/info/sparse-checkout
git remote add origin https://gitcode.com/harmonyos_samples/guide-snippets.git
git pull origin master