【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解

GeorgeGcs
• 阅读 6

##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、前言 在HarmonyOS 5的应用开发模型中,featureAbility是旧版FA模型(Feature Ability)的用法,Stage模型已采用全新的应用架构,推荐使用组件化的上下文获取方式,而非依赖featureAbility。 FA大概是API7之前的开发模型。所谓的开发模型,值得是创建鸿蒙开发工程后,你在什么样子的系统容器和接口上进行开发。 当初我在开发OpenHarmony的时候,最早用的就是FA模型,正是因为FA模型在开发过程中的诸多不方便,大概在API8时,官方推出了Stage模型,进行初步替代。 Stage模型,见名知意,是在系统提供的舞台容器上,进行应用的开发。整理更新的低耦合,高内聚。应用进程的管理也更加合理高效。 本文主要针对Stage模型与FA模型的区别。以及Stage模型如何获取上下文作出讲解。 二、Stage模型与FA模型的核心区别 下面的表格是官方文档的信息梳理,建议针对FA模型有大概了解即可。重点关注Stage模型的内容。 特性 Stage模型(推荐) FA模型(旧版) 应用单元 以AbilityStage为基础,通过UIAbility管理UI组件 以FeatureAbility和PageAbility为主 上下文获取 通过组件context属性或@ohos.app.ability.Context 使用featureAbility.getContext() 生命周期管理 基于UIAbility的生命周期回调(onCreate/onDestroy) 基于FeatureAbility的生命周期 在HarmonyOS 5 的Stage模型开发中,featureAbility属于过时的FA模型接口,必须通过组件或UIAbility的context属性获取上下文。这一变化体现了Stage模型“一切皆组件”的设计思想,确保代码结构更简洁、组件化更彻底,同时避免与旧版API的耦合。 三、Stage模型中正确的上下文获取方式 在Stage模型中,组件的上下文(Context)直接通过组件实例的context属性获取,无需通过featureAbility。

代码示例: // Stage模型中,组件内直接通过this.context获取上下文 @Entry @Component struct FileStorageDemo { // 文件写入 async writeToFile() { try { // 正确方式:使用组件的context属性 const filesDir = await this.context.getFilesDir(); const filePath = ${filesDir}/example.txt; const fd = await fileio.open(filePath, 0o102); // 0o102表示写入模式(O_WRONLY | O_CREAT) const data = 'Stage模型下的文件存储示例'; await fileio.write(fd, data); await fileio.close(fd); console.log('文件写入成功'); } catch (error) { console.error('文件写入失败:', error); } }

// 文件读取 async readFromFile() { try { const filesDir = await this.context.getFilesDir(); const filePath = ${filesDir}/example.txt; const fd = await fileio.open(filePath, 0o100); // 0o100表示读取模式(O_RDONLY) const buffer = new ArrayBuffer(1024); const bytesRead = await fileio.read(fd, buffer); const data = new TextDecoder('utf-8').decode(buffer.slice(0, bytesRead)); await fileio.close(fd); console.log('文件内容:', data); } catch (error) { console.error('文件读取失败:', error); } }

build() { Column() { Button('写入文件').onClick(() => this.writeToFile()) Button('读取文件').onClick(() => this.writeToFile()) } } }

上下文获取原则 组件内直接使用this.context(继承自Component的上下文属性)。 UIAbility中使用this.context(代表当前Ability的上下文)。 避免使用任何以featureAbility开头的旧版API。

点赞
收藏
评论区
推荐文章
GeorgeGcs GeorgeGcs
13小时前
【 HarmonyOS 5 入门系列 】鸿蒙HarmonyOS示例项目讲解
【HarmonyOS5入门系列】鸿蒙HarmonyOS示例项目讲解\鸿蒙开发能力HarmonyOSSDK应用服务鸿蒙金融类应用(金融理财一、前言:移动开发声明式UI框架的技术变革在移动操作系统的发展历程中,UI开发模式经历了从命令式到声明式的重大变革。根据
GeorgeGcs GeorgeGcs
13小时前
【HarmonyOS 5】ArrayBuffer转Base64,Base64转ArrayBuffer,Uri转ArrayBuff,PixelMap转ArrayBuffer,图片Uri转为PixelMap
【HarmonyOS5】ArrayBuffer转Base64,Base64转ArrayBuffer,Uri转ArrayBuff,PixelMap转ArrayBuffer,图片Uri转为PixelMap\鸿蒙开发能力HarmonyOSSDK应用服务鸿蒙金融类
GeorgeGcs GeorgeGcs
13小时前
【HarmonyOS 5】AttributeModifier和AttributeUpdater区别详解
【HarmonyOS5】AttributeModifier和AttributeUpdater区别详解\鸿蒙开发能力HarmonyOSSDK应用服务鸿蒙金融类应用(金融理财一、AttributeModifier和AttributeUpdater的定义和作用1
GeorgeGcs GeorgeGcs
6小时前
从“备胎”到领航者,鸿蒙操作系统的传奇进化
鸿蒙开发能力HarmonyOSSDK应用服务鸿蒙金融类应用(金融理财【HarmonyOS5】2019年,在全球科技产业的风云变幻中,华为正式推出了鸿蒙操作系统(HarmonyOS),这一消息如同一颗重磅炸弹,瞬间吸引了全世界的目光。彼时,外界对鸿蒙的诞生背
GeorgeGcs GeorgeGcs
4小时前
【HarmonyOS 5】鸿蒙中的UIAbility详解(一)
鸿蒙开发能力HarmonyOSSDK应用服务鸿蒙金融类应用(金融理财一、UIAbility是什么?Stage模型中的组件类型名,即UIAbility组件,包含UI,提供展示UI的能力,主要用于和用户交互。UIAbility类似于传统移动开发Android中
GeorgeGcs GeorgeGcs
4小时前
【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解
鸿蒙开发能力HarmonyOSSDK应用服务鸿蒙金融类应用(金融理财一、前言在HarmonyOS5的应用开发模型中,featureAbility是旧版FA模型(FeatureAbility)的用法,Stage模型已采用全新的应用架构,推荐使用组件化的上下文
GeorgeGcs GeorgeGcs
4小时前
鸿蒙 6.0 引爆 AI 智能体革命:从交互重构到全场景智能觉醒,未来已至
【HarmonyOS5】鸿蒙开发能力HarmonyOSSDK应用服务鸿蒙金融类应用(金融理财一、前言今天的华为开发者大会(2025HDC),全程看完,我只想说,震撼对于用户来说,一个未来场景的手机操作系统,正在诞生,从文本交互的操作转向自然语言,未来手机用
GeorgeGcs GeorgeGcs
4小时前
【HarmonyOS 5】使用openCustomDialog如何禁止手势关闭的方案
鸿蒙开发能力HarmonyOSSDK应用服务鸿蒙金融类应用(金融理财一、前言在HarmonyOS中使用openCustomDialog自定义弹框时,我们会遇到实现禁止手势关闭弹框的业务场景。虽然在HarmonyOSNext中,自定义Dialog默认可能继承
GeorgeGcs GeorgeGcs
2小时前
【HarmonyOS 5】鸿蒙用户头像编辑功能实践
鸿蒙开发能力HarmonyOSSDK应用服务鸿蒙金融类应用(金融理财一、前言1、应用背景在鸿蒙化开发过程中,我们发现最基本常见的功能用户头像的编辑,实现方式和Android与IOS有极大的不同。在实际开发和调研的过程中,我们发现并总结了鸿蒙隐私处理与业内A
GeorgeGcs GeorgeGcs
2小时前
【HarmonyOS 5】鸿蒙Web组件和内嵌网页双向通信DEMO示例
鸿蒙开发能力HarmonyOSSDK应用服务鸿蒙金融类应用(金融理财一、前言在ArkUI开发中,Web组件(Web)允许开发者在应用内嵌入网页,实现混合开发场景。本文将通过完整DEMO,详解如何通过WebviewController实现ArkUI与内嵌网页
GeorgeGcs
GeorgeGcs
Lv1
男 · 金融头部企业 · 鸿蒙应用架构师
HarmonyOS认证创作先锋,华为HDE专家,鸿蒙讲师,作者。目前任职鸿蒙应用架构师。 历经腾讯,宝马,研究所,金融。 待过私企,外企,央企。 深耕大应用开发领域十年。 AAE,Harmony(OpenHarmony\HarmonyOS),MAE(Android\IOS),FE(H5\Vue\RN)。
文章
56
粉丝
1
获赞
2