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

    文章

    2709

    浏览量

    47716
  • 鸿蒙
    +关注

    关注

    55

    文章

    1651

    浏览量

    42129

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

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

收藏 人收藏

    评论

    相关推荐

    我把分布式音乐播放器适配了Stage模型

    OpenAtom OpenHarmony(以下简称“OpenHarmony”)应用开发自API 8及其更早版本一直使用的是FA模型进行开发。FA模型是Feature Ability的
    的头像 发表于 11-03 23:05 744次阅读

    鸿蒙Stage模型--概述

    Stage模型:HarmonyOS 3.1 Develper Preview版本开始新增的模型,是目前主推且会长期演进的模型。在该模型中,由
    的头像 发表于 01-29 13:59 678次阅读
    <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 445次阅读
    <b class='flag-5'>Stage</b> <b class='flag-5'>模型</b>深入解读

    鸿蒙Ability开发-Stage模型下Ability的创建和使用

    对Ability开发技术的简单运用,更多的鸿蒙开发技术可以前往我主页查询,下面分享鸿蒙开发4.0技术分布(略缩图): 高清完整版技术学习路线图如下寻找保存(附鸿蒙文档) 基于Stage
    发表于 01-08 15:34

    线性模型和非线性模型区别是什么

    线性模型和非线性模型区别,以及激活函数的作用
    发表于 06-05 12:08

    我把分布式音乐播放器适配了Stage模型

    OpenAtom OpenHarmony(以下简称“OpenHarmony”)应用开发自API 8及其更早版本一直使用的是FA模型进行开发。FA模型是Feature Ability的缩
    发表于 11-07 11:43

    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模型能力接口(五)

    Stage模型下使用 二、 导入模块 import common from \'@ohos.app.ability.common\'; 三、系统能力 :以下各项对应的系统能力均为
    发表于 12-15 15:11

    鸿蒙原生应用/元服务开发-Stage模型能力接口(六)

    的起始版本。本模块接口仅可在Stage模型下使用。 二、 导入模块 import contextConstant from \'@ohos.app.ability.contextConstant\'; 三
    发表于 12-18 14:40

    鸿蒙原生应用/元服务开发-Stage模型能力接口(八)

    独标记接口的起始版本。本模块接口仅可在Stage模型下使用。 二、导入模块 .import ExtensionAbility from
    发表于 12-20 16:12

    Stage模型深入解读

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

    AI大模型和小模型是什么?AI大模型和小模型区别

      随着人工智能的不断发展和应用,机器学习模型的大小越来越成为一个重要的问题。在机器学习中,我们通常将模型分为两类:大模型和小模型。本文将介绍AI大
    发表于 08-08 16:55 5703次阅读

    ai大模型和小模型区别

    ai大模型和小模型区别  人工智能领域中的模型分为两种,一种是大模型,另一种是小模型,两者在训
    的头像 发表于 08-08 17:30 5638次阅读