React Native跨平台鸿蒙开发高级应用原理:UIAbility是包含UI界面的应用组件的相关API
UIAbility是HarmonyOS中提供UI界面的应用组件,支持生命周期管理和组件协同功能。RNAbility作为其子类,专门封装了启动React Native应用的核心逻辑,包括生命周期处理、窗口设置和页面路径配置等关键功能。开发者通过继承RNAbility并实现getPagePath()方法指定入口页面,即可快速构建RN应用。该组件提供了丰富的回调方法,如onCreate()进行初始化、o
UIAbility是包含UI界面的应用组件,继承自Ability,提供组件创建、销毁、前后台切换等生命周期回调,同时也具备组件协同的能力,组件协同主要提供如下常用功能:
- Caller:由startAbilityByCall接口返回,CallerAbility(调用者)可使用Caller与CalleeAbility(被调用者)进行通信。
- Callee:UIAbility的内部对象,CalleeAbility(被调用者)可以通过Callee与Caller进行通信。
API接口说明
RNAbility
基本介绍
RNAbility 继承 ArkUI 的UIAbility,封装了启动 RN 的必要操作,如不同生命周期状态的处理、订阅系统环境变量的变化等,应用程序开发人员应该扩展这个类,使用方法可参考如下代码:
import {RNAbility} from '@rnoh/react-native-openharmony';
export default class EntryAbility extends RNAbility {
getPagePath() {
return 'pages/Index';
}
}

方法
createLogger
protected createLogger(): RNOHLogger
onPrepareRNInstance
protected async onPrepareRNInstance(rnohCoreContext: RNOHCoreContext): void
如果要在 Ability 中创建 RNInstance 和加载包,可重写此方法。RNAbility 在加载内容之前等待此方法完成。这种方法减少了在隐藏启动屏幕后可能出现的闪烁,并且 RN 应用程序已准备就绪。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| rnohCoreContext | RNOHCoreContext |
onWindowSetup
protected async onWindowSetup(window: window.Window): void
自定义屏幕方向和窗口大小。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| window | window.Window | 当前窗口实例当前窗口实例。 |
onWindowStageSetup
protected async onWindowStageSetup(windowStage: window.WindowStage): void
为当前窗口加载具体页面内容,如果要自定义加载行为可重写该方法。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| windowStage | window.WindowStage | 当前窗口实例当前窗口实例。 |
getPagePath
protected abstract getPagePath(): string
获取入口页面路径,该路径是 main_pages.json 中定义的路径。扩展类必须实现该方法。
defaultBackPressHandler
protected defaultBackPressHandler(): void
当 React 应用程序不处理设备返回事件时调用该方法。
onCreate
onCreate(want: Want): void
Create 状态为在应用加载过程中,UIAbility 实例创建完成时触发,系统会调用onCreate()回调。可以在该回调中进行页面初始化操作,例如变量定义资源加载等,用于后续的 UI 展示。
此处实现为创建 RNInstancesCoordinator、RNOHCoreContext 实例,并通过调用AppStorage.setOrCreate()将 RNOHCoreContext 存储到应用全局。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| want | Want | 用于在应用组件之间传递信息。 |

onCreateDefaultHttpClient
protected onCreateDefaultHttpClient(): undefined | HttpClient
返回 RNInstances 共享的 HttpClient。
onDestroy
onDestroy(): void
Destroy 状态在 UIAbility 实例销毁时触发。可以在onDestroy()回调中进行系统资源的释放、数据的保存等操作。
这里最终会调用所有已注册 RNInstance的 onDestroy 方法,统一销毁。
onWindowStageCreate
onWindowStageCreate(windowStage: window.WindowStage): void
UIAbility 实例创建完成之后,在进入 Foreground 之前,系统会创建一个 WindowStage。WindowStage 创建完成后会进入onWindowStageCreate()回调,可以在该回调中设置 UI 加载、设置 WindowStage 的事件订阅。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| windowStage | window.WindowStage | 当前窗口实例当前窗口实例。 |
onMemoryLevel
onMemoryLevel(level: AbilityConstant.MemoryLevel): void
onMemoryLevel是系统底层AbilityStage的能力,当系统调整内存时触发的事件。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| level | AbilityConstant.MemoryLevel | 回调返回内存微调级别,显示当前内存使用状态。 |
onConfigurationUpdate
onConfigurationUpdate(config: AbilityConfiguration.Configuration): void
onConfigurationUpdate是系统底层AbilityStage的能力,环境变化通知接口,发生全局配置发生改变时回调。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| config | AbilityConfiguration.Configuration | 发生全局配置变更时触发回调,当前全局配置包括系统语言、深浅色模式。 |
onForeground
onForeground(): void
onForeground在 UIAbility 实例切换至前台时触发。
此处会将 RNInstancesCoordinator 中的 appState 变量设置为 “FOREGROUND”。
onBackground
onBackground(): void
onBackground在 UIAbility 实例切换至后台时触发。
此处会将 RNInstancesCoordinator 中的 appState 变量设置为 “BACKGROUND”。
RNAbility 大部分代码由 RNOH 实现,以提高稳定性。如果需要更自由的实现方式,可以使用 RNInstancesCoordinator,本节主要介绍了 RNAbility 的接口类型。

更多推荐


所有评论(0)