笔者这两个月一直在折腾分布式应用,并且分别基于 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:
let context = featureability.getcontext();stage stage 模型中包含多种 context,比较常用的有 abilitycontext 和在 ets 页面中访问 context。 abilitycontext stage 模型下,每个 ability 中都包含了一个 context 属性:
在继承 ability 的类中通过 this.context 就可以获取 abilitycontext,从而操作 ability 的方法(如 startability、connectability 等)
import ability from '@ohos.application.ability'export default class mainability extends ability { oncreate(want, launchparam) { this.context.requestpermissionsfromuser(permissions) } onwindowstagecreate(windowstage) { let context = this.context; } ...}; 在 ets 页面中访问 context: // 获取当前component关联的contextlet context = getcontext(this) as any
启动 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 代替,不过接口基本上不会有很大改变,都是改个名字、加个参数之类。 关于两种模型还有什么差别欢迎大家留言讨论,文章有错误之处也欢迎指出。
PY32F003系列微控制器开发板的详细说明
长沙位列全国先进制造百强城市第6位
如何提升大数据技术自身的能力
IPv6地址结构、地址分类以及表示方法
中车海上半直驱风力发电传动系统助力国家“十四五”规划
鸿蒙Stage模型和FA模型区别
【存储数据恢复】某品牌EqualLogic系列存储介绍和数据恢复方法
高通占5G领导地位:首款5G基带解决方案面世!
HLS系列–High Level Synthesis(HLS)的端口综合3
树莓派是什么?用树莓派搭建一台永久运行的个人服务器
FPGA芯片用于神经网络算法优化的设计实现方案
Kyocera和Vicor宣布合作 开发新一代合封电源解决方案
简述端子线接口的规格种类
联想WatchS智能手表怎么样 值不值得买
上半年销售疲软,iPhone拉货3Q打9折
数据科学容易犯的5个误区
变压器绝缘电阻降低的原因分析
智能交通信息系统的应用方案与应用案例
使用Roobopoli项目构建智能城市和智能汽车
2n3055简易功放电路图大全(音频功率放大器/扬声器/晶体管)