createTurboModulesFactory(ctx)(deprecated)
createTurboModulesFactory(ctx: UITurboModuleContext): TurboModulesFactory

创建TurboModule工厂,从 RNOHVersion 0.72.38 开始废弃,使用createUITurboModuleFactory代替。

参数
参数名 类型 必填 说明
ctx UITurboModuleContext UITurboModule上下文对象
createUITurboModuleFactory(deprecated)
createUITurboModuleFactory(ctx: UITurboModuleContext): UITurboModuleFactory

创建TurboModule工厂,从 RNOHVersion 0.72.38 开始废弃,使用getUITurboModuleFactoryByNameMapcreateEagerUITurboModuleByNameMap代替。

参数
参数名 类型 必填 说明
ctx UITurboModuleContext UITurboModule上下文对象
createWorkerTurboModuleFactory(deprecated)
createWorkerTurboModuleFactory(ctx: WorkerTurboModuleContext): WorkerTurboModuleFactory | null
参数
参数名 类型 必填 说明
ctx WorkerTurboModuleContext WorkerTurboModule上下文对象
getUITurboModuleFactoryByNameMap
getUITurboModuleFactoryByNameMap(): Map<string, (ctx: UITurboModuleContext) => UITurboModule | null>

通过此方法获取Factory工厂类,返回一个模块工厂映射表,此方法在UI线程中使用。

getAnyThreadTurboModuleFactoryByNameMap
getAnyThreadTurboModuleFactoryByNameMap(): Map<string, (ctx: AnyThreadTurboModuleContext) => AnyThreadTurboModule | null>

通过此方法获取Factory工厂类,返回一个模块工厂映射表,此方法在worker线程中使用。

createEagerUITurboModuleByNameMap
createEagerUITurboModuleByNameMap(ctx: UITurboModuleContext): Promise<Map<string, UITurboModule>>

创建TurboModule 映射表,注册需要在应用启动时立即创建的UI线程TurboModule。

参数
参数名 类型 必填 说明
ctx UITurboModuleContext UITurboModule上下文对象
createEagerAnyThreadTurboModuleByNameMap
createEagerAnyThreadTurboModuleByNameMap(ctx: AnyThreadTurboModuleContext): Promise<Map<string, AnyThreadTurboModule>>

创建TurboModule 映射表,注册需要在应用启动时立即创建的worker线程TurboModule。

参数
参数名 类型 必填 说明
ctx string AnyThreadTurboModule上下文对象
createSurface
createSurface(appKey: string): SurfaceHandle

RNSurface 使用,会在 React Native 中创建一个 Surface。

参数
参数名 类型 必填 说明
appKey string 开发者在JS侧使用AppRegistry.registerComponent注册的名称。
updateState
updateState(componentName: string, tag: Tag, state: unknown): void

向 ComponentNapiBinder.h::updateState 发送状态更新请求,更新 C++ 端状态。

参数
参数名 类型 必填 说明
componentName string 组件名称。
tag Tag 组件Tag。
state unknown 要更新的状态。
bindComponentNameToDescriptorType
bindComponentNameToDescriptorType(componentName: string, descriptorType: string)

将 Descriptor 类型和组件名进行关联,用于将核心组件替换为自定义组件。

参数
参数名 类型 必填 说明
componentName string 组件名称。
descriptorType string 为给定的descriptorTypeComponentBuilderContext中提供的值。
getComponentNameFromDescriptorType
getComponentNameFromDescriptorType(descriptorType: string): string

根据 Descriptor 类型获取组件名称。

参数
参数名 类型 必填 说明
descriptorType string Descriptor类型。
blockComponentsGestures
blockComponentsGestures(targetComponentTag: Tag): (() => void)

阻止 targetComponent 及其祖先组件中的手势。由 react-native-gesture-handler 在 RNScrollView 或其他可滚动组件中平移时使用。

参数
参数名 类型 必填 说明
targetComponentTag Tag 目标组件的Tag。
返回

返回一个可以抵消这个效应的方法。

getInitialBundleUrl
getInitialBundleUrl(): string | undefined

返回第一个加载的 JS Bundle URL。SourceCodeTurboModule 使用这个方法来生成正确的堆栈跟踪。有些应用将它们捆绑包分开来提高启动性能,因此有了“初始”这个词。

getAssetsDest
getAssetsDest(): string

返回 assets 资源的路径。

postMessageToCpp
postMessageToCpp(name: string, payload: any)

ArkTS 向 C++ 端发送消息。由 ArkTSMessageHub:ObserverArkTSMessageHandler 处理。

参数
参数名 类型 必填 说明
name string 消息名称。
payload any 发送的数据。
registerFont
registerFont(fontFamily: string, fontResource: Resource | string): void

注册字体。

参数
参数名 类型 必填 说明
fontFamily string 字体名。
fontResource Resource / string 字体资源对象,或字体资源文件的沙箱路径。
setAttachedLabel
setAttachedLabel(attachedLabel: string): void

将一段开发者自定义的字符串标签挂载到当前 RNInstance。
之后该实例通过 reportRNOHError 上报的错误中,会自动带上该标签(用于快速关联具体 bundle / 场景),便于在日志与订阅回调中定位来源。

参数
参数名 类型 必填 说明
attachedLabel string 要绑定到当前实例的自定义标签文本;超过 256 字符将触发 warning 日志并被截断。
getAttachedLabel
getAttachedLabel(): string

返回当前 RNInstance 上通过 setAttachedLabel方法设置的自定义标签。

RNOHCoreContext

基本介绍

RNOHCoreContext 提供可跨 RNInstances 共享的依赖项和实用程序。还包括创建和销毁RNInstance 的方法,对于特定于 RNInstance 的方法。本节主要介绍了 RNOHCoreContext 的接口类型。

关键参数

参数名 类型 说明
uiAbilityContext common.UIAbilityContext UIAbility的上下文。
safeAreaInsetsProvider SafeAreaInsetsProvider SafeAreaInsets 提供者,SafeAreaInsets 提供了与屏幕边缘的距离,可以用来避免在状态栏、缺口或瀑布边缘下面呈现的内容。
isDebugModeEnabled boolean React Native 是否使用 Debug 模式。
launchUri string | undefined ArkUI::Want::uri,应用自己的uri。

关键方法

createAndRegisterRNInstance
createAndRegisterRNInstance: (options: RNInstanceOptions, frameNodeFactory?: FrameNodeFactory) => Promise<RNInstance>

创建 RNInstance 并将其注册到 RNOH 的内部注册表中。

参数
参数名 类型 必填 说明
options RNInstanceOptions RNInstance 的参数选项。
frameNodeFactory FrameNodeFactory RNSurface 实例化的内部类。
destroyAndUnregisterRNInstance
destroyAndUnregisterRNInstance: (rnInstance: RNInstance) => void

销毁 RNInstance 并从 RNOH 的内部注册表中注销。

参数
参数名 类型 必填 说明
rnInstance RNInstance 要销毁的 RNInstance
getDisplayMetrics
getDisplayMetrics: () => DisplayMetrics

返回当前屏幕信息。

getUIAbilityState
getUIAbilityState: () => UIAbilityState

返回应用程序的当前状态。

dispatchBackPress
dispatchBackPress: () => void

用 root ArkUI 组件的 onBackPress 调用,目前这是 BackPress 的唯一响应方式。

reportRNOHError
参数名 类型 必填 说明
rnohError RNOHError 上报的错误

上报 RNOH 错误用于监听。

RNComponentContext

RNComponentContext 是 React Native for OpenHarmony 构造组件时使用的上下文信息,是 RNOHContext 的子类。

constructor

参数名 类型 必填 说明
rnohContext RNOHContext 用于组件或TurboModule使用的上下文信息。
wrappedCustomRNComponentBuilder WrappedCustomRNComponentBuilder 用于构造ArkTS侧自定义组件的构造器。
wrappedRNComponentBuilder WrappedRNComponentBuilder 用于构造 ArkTS 侧 RN 子组件的构造器。
rnComponentDataSourceFactoriesByDescriptorType Map<string, RNComponentDataSourceFactory> 用来存储 LazyForEach 的 DataSource 对象。

方法

runOnWorkerThread<TParams, TResult, TRunnable>(runnable, params)
泛型类型 继承父类型 必填 说明
TParams SupportedTaskParams 参数类型, 受 WORKER 线程通信机制限制,必须为可序列化类型。
TResult lang.ISendable | void 返回值类型, 受 WORKER 线程通信机制限制,必须为可序列化类型。
TRunnable WorkerTaskRunnable<TParams, TResult> 可执行任务对象类型。
参数名 类型 必填 说明
runnable TRunnable 可执行任务对象。
params TParams 可执行任务参数。

params作为参数,在WORKER 线程并行执行runnable.run(),返回一个Promise<TResult>对象,可用于读取runnable.run()的返回值。

使用本特性前需启用WORKER 线程特性。如何启用WORKER 线程特性详见架构介绍.md#worker线程

使用示例详见常见开发场景.md#如何在worker-线程并行执行自定义任务

EtsUITurboModuleContext

EtsUITurboModuleContext 是 React Native for OpenHarmony 构造EtsUITurboModule时使用的上下文信息,是 RNOHContext 的子类。

方法

runOnWorkerThread<TParams, TResult, TRunnable>(runnable, params)

同上文API接口说明.md#runonworkerthreadtparams-tresult-trunnablerunnable-params

JSBundleProvider

基础介绍

JS Bundle 提供者,用于初始化 bundle 信息,获取 bundle 具体内容。本节主要介绍了 RNOHCoreContext 的接口类型。

类型

AnyJSBundleProvider

所有 bundle 的加载器,从小到大依次加载。

参数
参数名 类型 必填 说明
jsBundleProviders JSBundleProvider[] JSBundleProvider 数组,可以传入多个 JS Bundle Provider。
MetroJSBundleProvider

使用 Metro 服务加载 bundle。

FileJSBundleProvider

从沙箱目录下加载 bundle。

参数
参数名 类型 必填 说明
path string 文件地址。
appKeys string[] 开发者在JS侧使用AppRegistry.registerComponent注册的名称数组。
ResourceJSBundleProvider

从资源文件中加载 bundle,专指 resources/rawfile 下的 bundle 文件。

参数名 类型 必填 说明
resourceManager resmgr.ResourceManager 资源管理对象。
path string bundle文件名。
appKeys string[] 开发者在 JS 侧使用 AppRegistry.registerComponent 注册的名称。

RNInstancesCoordinator

基本介绍

RNAbility 大部分代码由 RNOH 实现,以提高稳定性。这类项目不使用 RNAbilityRNApp。为此,React Native for OpenHarmony 提供了 RNInstancesCoordinator 给开发者,旨在更加灵活的控制 RN 的启动,

方法

create
static create(dependencies: RNInstancesCoordinatorDependencies, options?: RNInstancesCoordinatorOptions)

根据给定的 RNInstancesCoordinatorDependenciesRNInstancesCoordinatorOptions 返回 RNInstancesCoordinator 的对象。

参数
参数名 类型 必填 说明
dependencies RNInstancesCoordinatorDependencies 用于构建 RNInstancesCoordinator 时使用的依赖。
options RNInstancesCoordinatorOptions 构建 RNInstancesCoordinator 时使用的选项。
onDestroy
rnInstancesCoordinator?.onDestroy(): void

onDestroy 方法在 UIAbility 实例销毁时调用,进入 RN。可以在onDestroy()回调中进行系统资源的释放、数据的保存等操作。

getBuildMode
rnInstancesCoordinator?.getBuildMode(): BuildMode

获取项目的构建方式: ‘RELEASE’ 或 ‘DEBUG’;

getRNOHCoreContext
rnInstancesCoordinator?.getRNOHCoreContext(): RNOHCoreContext

获取 RNInstancesCoordinator 实例的 RNOHCoreContext

onForeground
rnInstancesCoordinator?.onForeground(): void

开发者应在onForegroundUIAbility 实例切换至前台时调用该方法,向 React 侧通知应用已经从后台切换至前台。

onBackground
rnInstancesCoordinator?.onBackground(): void

开发者应在onBackgroundUIAbility实例切换至后台时调用该方法,向 React 侧通知应用已经从前台切换至后台。

onWindowStageChange
rnInstancesCoordinator?.onWindowStageChange(windowStageEvent: window.WindowStageEventType): void

开发者需要监听windowStageEvent事件,并调用该方法,向 React 侧通知 WindowStage 生命周期变化。

参数名 类型 必填 说明
windowStageEvent WindowStageEventType WindowStage 类型。
onWindowSizeChange
rnInstancesCoordinator?.onWindowSizeChange(windowSize: window.Size): void

开发者需要监听windowSizeChange事件,并调用该方法,向 React 侧通知窗口尺寸变化。

参数名 类型 必填 说明
windowSize Size 更改后的窗口大小。
onConfigurationUpdate
rnInstancesCoordinator?.onConfigurationUpdate(systemConfiguration: AbilityConfiguration.Configuration): void

开发者应在系统配置发生变化时调用该方法,通知 React Native for openHarmony 系统相关设置已经发生了变化。

参数名 类型 必填 说明
systemConfiguration Configuration 当系统配置发生变化,向 React Native for OpenHarmony 通知。
onMemoryLevel
rnInstancesCoordinator?.onMemoryLevel(memoryLevel: number): void

开发者应在内存到达不同级别时,调用该方法,向 React Native 通知。

参数名 类型 必填 说明
memoryLevel AbilityConstant.MemoryLevel 通知 React Native 内存级别发生改变。
onNewWant
rnInstancesCoordinator?.onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void

开发者需要在 UIAbility 实例已经启动并在前台运行过,由于某些原因切换到后台,再次启动该 UIAbility 实例时会回调执行的 UIAbility.onNewWant 中调用该方法。

参数名 类型 必填 说明
want Want Want 类型参数,如 ability 名称,包名等。
launchParam AbilityConstant.LaunchParam UIAbility 启动的原因、上次异常退出的原因信息。
RNInstancesCoordinatorDependencies
参数名 类型 必填 说明
fontSizeScale number | undefined 字体大小缩放比例,值为 1 的时候为正常大小字体,小于1缩小,大于 1 放大。
logger RNOHLogger 用于打印日志。
uiAbilityContext UIAbilityContext 使用 React Native 的 Ability 的上下文信息。
rnohWorkerScriptUrl string 部分TurboModule需要启动Worker线程才可以正常启用,需要设置该属性,启用对应 name 的 RNInstance 的 Worker 线程。
defaultBackPressHandler Function React 侧执行的 exitApp 的原生侧实现。
RNInstancesCoordinatorOptions
参数名 类型 必填 说明
launchURI string Linking.getInitialURL()获取到的初始URL。
onGetPackagerClientConfig (buildMode: BuildMode) => JSPackagerClientConfig | undefined 返回Metro配置的函数。
defaultHttpClient HttpClient 用于在 RN 与原生混合的应用中,重用 Cookies 或打印日志。
disableCleaningRNInstances boolean 是否启用 CleanUP 线程,清理 RN 实例。
setupRNOHWorker
基本介绍

TurboModule 可配置为运行在 Worker 线程中,配置需通过 RNOHWorker.ets 文件调用 setupRNOHWorker 方法实现。关于具体操作步骤,可参考 TurboModule.md 文档中 “设置自定义 TurboModule 运行在 Worker 线程” 栏目。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐