FA模型访问Stage模型DataShareExtensionAbility
概述
无论FA模型还是Stage模型,数据读写功能都包含客户端和服务端两部分。
- FA模型中,客户端是由DataAbilityHelper提供对外接口,服务端是由DataAbility提供数据库的读写服务。
- Stage模型中,客户端是由DataShareHelper提供对外接口,服务端是由DataShareExtensionAbility提供数据库的读写服务。
- 开发前请熟悉鸿蒙开发指导文档 :[
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
服务端由FA模型升级到Stage模型后,会导致FA模型的客户端在API 9(含)之后的版本上无法访问服务端。
为了解决上述问题,系统在框架侧提供了一个解决方案,让开发者平滑过渡到API 9(含)之后的版本。
基本原理
一种兼容方法是DataAbilityHelper根据传入的URI的前缀是DataAbility还是DataShare来决定是否调DataShareHelper的接口。但是这种方法需要开发者修改原客户端代码的URI,做不到无感知切换。
因此DataAbilityHelper不能仅依赖URI的前缀决定访问DataAbility还是DataShareExtensionAbility,系统采用的方法是:
- 先按照传入的URI拉起DataAbility;如果拉起失败,再将传入的URI的前缀转换成DataShare再去尝试拉起DataShareExtensionAbility。
- 如果URI无对应的DataAbility和DataShareExtensionAbility,则拉起失败;反之,必定会拉起DataAbility或者DataShareExtensionAbility。
约束与限制
- 由DataAbility切换到DataShareExtensionAbility时,只能修改URI的前缀,不能修改URI的其他部分。
- DataShareHelper并没有实现原DataAbilityHelper对外API接口的所有功能,因此有部分接口是无法兼容的,具体如表1所示。
表1 FA模型访问stage模型DataShareExtensionAbility接口支持情况
接口HarmonyOS与OpenHarmony鸿蒙文档籽料:mau123789是v直接拿 | DataAbilityHelper是否提供 | DataShareHelper是否提供 | 是否兼容 |
---|---|---|---|
on | 是 | 是 | 是 |
off | 是 | 是 | 是 |
notifyChange | 是 | 是 | 是 |
insert | 是 | 是 | 是 |
delete | 是 | 是 | 是 |
query | 是 | 是 | 是 |
update | 是 | 是 | 是 |
batchInsert | 是 | 是 | 是 |
getType | 是 | 否 | 否 |
getFileTypes | 是 | 否 | 否 |
normalizeUri | 是 | 是 | 是 |
denormalizeUri | 是 | 是 | 是 |
openFile | 是 | 否 | 否 |
call | 是 | 否 | 否 |
executeBatch | 是 | 否 | 否 |
审核编辑 黄宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
接口
+关注
关注
33文章
8728浏览量
152112 -
框架
+关注
关注
0文章
403浏览量
17560 -
模型
+关注
关注
1文章
3372浏览量
49316 -
鸿蒙
+关注
关注
57文章
2398浏览量
43133
发布评论请先 登录
相关推荐
鸿蒙元服务万能卡片开发-stage模型和fa模型的卡片区别
一、项目类型
Application: 应用开发
Atomic Service:原子化服务开发
这里选择Empty Ability模板创建项目。
二、
发表于 05-22 14:20
鸿蒙Ability Kit(程序框架服务)【组件启动规则(Stage模型)】
组件启动规则(Stage模型) 启动组件是指一切启动或连接应用组件的行为: 启动UIAbility、ServiceExtensionAbility、DataShareExtensionAbility
![<b class='flag-5'>鸿蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服务</b>)【组件启动规则(<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>)】](https://file1.elecfans.com/web2/M00/EC/7E/wKgZomZi_feAXjNKAAFnNkxsf8k722.jpg)
鸿蒙开发Ability Kit程序框架服务:FA模型绑定Stage模型ServiceExtensionAbility
本文介绍FA模型的三种应用组件如何绑定Stage模型的ServiceExtensionAbility组件。
![<b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b><b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服务</b>:<b class='flag-5'>FA</b><b class='flag-5'>模型</b>绑定<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>ServiceExtensionAbility](https://file1.elecfans.com/web2/M00/C5/D5/wKgZomYCnRSAcOMcAACEEnttXHc600.png)
鸿蒙开发Ability Kit程序框架服务:FA模型切换Stage模型指导 app和deviceConfig的切换
为了便于开发者维护应用级别的属性配置,Stage模型将config.json中的app和deviceConfig标签提取到了app.json5中进行配置,并对部分标签名称进行了修改,具体差异见下表。
![<b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b><b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服务</b>:<b class='flag-5'>FA</b><b class='flag-5'>模型</b>切换<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>指导 app和deviceConfig的切换](https://file1.elecfans.com/web2/M00/C5/D5/wKgZomYCnRSAcOMcAACEEnttXHc600.png)
鸿蒙开发Ability Kit程序框架服务:FA模型切换Stage模型指导 module的切换
从FA模型切换到Stage模型时,开发者需要将config.json文件module标签下的配置迁移到module.json5配置文件mod
![<b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b><b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服务</b>:<b class='flag-5'>FA</b><b class='flag-5'>模型</b>切换<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>指导 module的切换](https://file1.elecfans.com/web2/M00/C5/D5/wKgZomYCnRSAcOMcAACEEnttXHc600.png)
评论