0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙Stage模型和FA模型区别

OpenHarmony技术社区 来源:OST开源开发者 2023-01-04 11:59 次阅读

笔者这两个月一直在折腾分布式应用,并且分别基于 API8 的 FA 模型以及 API9 的 Stage 模型进行了开发,这两天总算是基本开发完了,闲下来总结下这两者的区别,顺便跟大家唠唠开发时踩过的坑。

请求权限

Stage 模型中配置文件由 FA 模型的 config.json 改为 module.json5,同时一些字段名也发生了改变。

例如 reqPermissions 就改为 requestPermissions(好像这个区别并不是很起眼,但就是因为之前我有一个朋友在使用 Stage 模型开发时直接复制了 FA 模型的请求权限代码,而我一开始也没看出来哪里有问题,因为只差了几个字母,后来我手敲代码才找到了问题所在)。

FA:

"reqPermissions":[
{
"name":"ohos.permission.DISTRIBUTED_DATASYNC"
}
]
Stage:
"requestPermissions":[
{
"name":"ohos.permission.DISTRIBUTED_DATASYNC"
}
]

获取 Context

FA:

letcontext=featureAbility.getContext();
Stage Stage 模型中包含多种 Context,比较常用的有 AbilityContext 和在 eTS 页面中访问 Context。 AbilityContext Stage 模型下,每个 Ability 中都包含了一个 Context 属性:

aebc85c4-8be3-11ed-bfe3-dac502259ad0.png

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

importAbilityfrom'@ohos.application.Ability'

exportdefaultclassMainAbilityextendsAbility{
onCreate(want,launchParam){
this.context.requestPermissionsFromUser(PERMISSIONS)
}
onWindowStageCreate(windowStage){
letcontext=this.context;
}
...
};
在 eTS 页面中访问 Context: aec97d92-8be3-11ed-bfe3-dac502259ad0.png
//获取当前component关联的Context
letcontext=getContext(this)asany

启动 Ability

FA:

featureAbility.startAbility({
want:{
bundleName:'com.haoc.distributevideoplayer',
abilityName:'com.haoc.distributevideoplayer.MainAbility',
deviceId:deviceId,
parameters:{
isFA:'FA'
}
}
})

Stage:

context.startAbility({
bundleName:'com.haoc.distributevideoplayer',
abilityName:'EntryAbility',
deviceId:deviceId,
parameters:{
isFA:'FA'
}
})
①Stage 模型不再使用 featureAbility 接口,而需要先获取当前 Ability 的上下文,再由 AbilityContext 调用 startAbility 方法。 ②相比 FA 模型少了一对{}括号。 ③MainAbility 改名为 EntryAbility,且 abilityName 不再是由 package + Ability name 组成。

结语

由于开发时部分接口在 API9 以上才提供,所以需要将应用 API 升级到 9。 但其实 API9 也提供了 FA 模型,只需要在 API8 的基础上进行小部分修改即可,那笔者为何还花费大量精力去折腾 Stage 模型呢? 一个是想体验一下这两者在开发上的差别,另一个是未来将不再主推 FA 模型,现在学习的成本没有以后的成本高。 笔者在开发时还发现许多接口将被废弃,例如 Ability,将会用 UIAbility 代替,不过接口基本上不会有很大改变,都是改个名字、加个参数之类。 关于两种模型还有什么差别欢迎大家留言讨论,文章有错误之处也欢迎指出。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模型
    +关注

    关注

    1

    文章

    3171

    浏览量

    48710
  • 鸿蒙
    +关注

    关注

    57

    文章

    2307

    浏览量

    42737

原文标题:鸿蒙Stage模型和FA模型区别

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    鸿蒙Stage模型--概述

    Stage模型:HarmonyOS 3.1 Develper Preview版本开始新增的模型,是目前主推且会长期演进的模型。在该模型中,由
    的头像 发表于 01-29 13:59 1236次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>Stage</b><b class='flag-5'>模型</b>--概述

    Stage 模型深入解读

    HarmonyOS 3.1 版本(API 9)推出了全新应用开发模型 - Stage 模型,该模型重新定义了应用开发的能力边界,从应用开发模型
    的头像 发表于 02-18 09:28 1081次阅读
    <b class='flag-5'>Stage</b> <b class='flag-5'>模型</b>深入解读

    鸿蒙OS开发案例:【Stage模型卡片】

    本示例展示了Stage模型卡片提供方的创建与使用。
    的头像 发表于 04-09 17:13 941次阅读
    <b class='flag-5'>鸿蒙</b>OS开发案例:【<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>卡片】

    Stage模型深入解读

    。 相比于FA模型Stage模型提供了更灵活的开发方式,更低的内存占用和更规范化的系统管理机制。 未来HarmonyOS将在兼容FA
    发表于 03-15 10:32

    鸿蒙元服务万能卡片开发-stage模型fa模型的卡片区别

    一、项目类型 Application: 应用开发 Atomic Service:原子化服务开发 这里选择Empty Ability模板创建项目。 二、Stage模型卡片开发 Api:9
    发表于 05-22 14:20

    OpenHarmony应用模型的构成要素与Stage优势

    应用开发更简单、高效。 二、Stage主推模型优势 Stage模型之所以成为主推模型,源于其设计思想。S
    发表于 09-26 16:48

    Stage模型深入解读

    作者:sunbingxin 应用框架架构师 HarmonyOS 3.1版本(API 9)推出了全新应用开发模型-Stage模型,该模型重新定义了应用开发的能力边界,从应用开发
    的头像 发表于 03-16 13:35 870次阅读

    鸿蒙开发Ability Kit程序框架服务:FA模型Stage模型应用组件互通综述

    FA模型Stage模型是两套不同的应用模型,他们拥有各自的组件。FA
    的头像 发表于 06-24 16:43 467次阅读
    <b class='flag-5'>鸿蒙</b>开发Ability Kit程序框架服务:<b class='flag-5'>FA</b><b class='flag-5'>模型</b>与<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>应用组件互通综述

    鸿蒙开发Ability Kit程序框架服务:FA模型启动Stage模型UIAbility

    本文介绍FA模型的三种应用组件如何启动Stage模型的UIAbility组件。
    的头像 发表于 06-25 16:00 327次阅读
    <b class='flag-5'>鸿蒙</b>开发Ability Kit程序框架服务:<b class='flag-5'>FA</b><b class='flag-5'>模型</b>启动<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>UIAbility

    鸿蒙开发Ability Kit程序框架服务:FA模型绑定Stage模型ServiceExtensionAbility

    本文介绍FA模型的三种应用组件如何绑定Stage模型的ServiceExtensionAbility组件。
    的头像 发表于 06-25 10:43 257次阅读
    <b class='flag-5'>鸿蒙</b>开发Ability Kit程序框架服务:<b class='flag-5'>FA</b><b class='flag-5'>模型</b>绑定<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>ServiceExtensionAbility

    鸿蒙开发Ability Kit程序框架服务:FA模型访问Stage模型DataShareExtensionAbility

    无论FA模型还是Stage模型,数据读写功能都包含客户端和服务端两部分。
    的头像 发表于 06-25 14:30 365次阅读
    <b class='flag-5'>鸿蒙</b>开发Ability Kit程序框架服务:<b class='flag-5'>FA</b><b class='flag-5'>模型</b>访问<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>DataShareExtensionAbility

    鸿蒙开发Ability Kit程序框架服务:Stage模型启动FA模型PageAbility

    本小节介绍Stage模型的两种应用组件如何启动FA模型的PageAbility组件。
    的头像 发表于 06-26 09:50 325次阅读
    <b class='flag-5'>鸿蒙</b>开发Ability Kit程序框架服务:<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>启动<b class='flag-5'>FA</b><b class='flag-5'>模型</b>PageAbility

    鸿蒙开发Ability Kit程序框架服务:Stage模型绑定FA模型ServiceAbility

    本小节介绍Stage模型的两种应用组件如何绑定FA模型ServiceAbility组件。
    的头像 发表于 06-25 21:47 257次阅读
    <b class='flag-5'>鸿蒙</b>开发Ability Kit程序框架服务:<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>绑定<b class='flag-5'>FA</b><b class='flag-5'>模型</b>ServiceAbility

    鸿蒙开发Ability Kit程序框架服务:FA模型切换Stage模型概述

    本文介绍如何将一个FA模型开发的声明式范式应用切换到Stage模型
    的头像 发表于 06-26 14:40 316次阅读
    <b class='flag-5'>鸿蒙</b>开发Ability Kit程序框架服务:<b class='flag-5'>FA</b><b class='flag-5'>模型</b>切换<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>概述

    鸿蒙开发Ability Kit程序框架服务:FA模型切换Stage模型指导 module的切换

    FA模型切换到Stage模型时,开发者需要将config.json文件module标签下的配置迁移到module.json5配置文件module标签下,具体差异见下列表格。
    的头像 发表于 06-27 14:16 397次阅读
    <b class='flag-5'>鸿蒙</b>开发Ability Kit程序框架服务:<b class='flag-5'>FA</b><b class='flag-5'>模型</b>切换<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>指导 module的切换