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

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

3天内不再提示

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

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-06-25 14:30 次阅读

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,系统采用的方法是:

  1. 先按照传入的URI拉起DataAbility;如果拉起失败,再将传入的URI的前缀转换成DataShare再去尝试拉起DataShareExtensionAbility。
  2. 如果URI无对应的DataAbility和DataShareExtensionAbility,则拉起失败;反之,必定会拉起DataAbility或者DataShareExtensionAbility。

约束与限制

  1. 由DataAbility切换到DataShareExtensionAbility时,只能修改URI的前缀,不能修改URI的其他部分。FAvsStage-uri
  2. DataShareHelper并没有实现原DataAbilityHelper对外API接口的所有功能,因此有部分接口是无法兼容的,具体如表1所示。
    表1 FA模型访问stage模型DataShareExtensionAbility接口支持情况
    搜狗高速浏览器截图20240326151547.png
接口HarmonyOSOpenHarmony鸿蒙文档籽料:mau123789是v直接拿DataAbilityHelper是否提供DataShareHelper是否提供是否兼容
on
off
notifyChange
insert
delete
query
update
batchInsert
getType
getFileTypes
normalizeUri
denormalizeUri
openFile
call
executeBatch

审核编辑 黄宇

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

    关注

    33

    文章

    7965

    浏览量

    149224
  • 框架
    +关注

    关注

    0

    文章

    378

    浏览量

    17155
  • 模型
    +关注

    关注

    1

    文章

    2823

    浏览量

    48054
  • 鸿蒙
    +关注

    关注

    55

    文章

    2103

    浏览量

    42272
收藏 人收藏

    评论

    相关推荐

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

    Ability开发技术的简单运用,更多的鸿蒙开发技术可以前往我主页查询,下面分享鸿蒙开发4.0
    发表于 01-08 15:34

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

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

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

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

    鸿蒙Stage模型FA模型区别

    笔者这两个月一直在折腾分布式应用,并且分别基于 API8 的 FA 模型以及 API9 的 Stage 模型进行了开发,这两天总算是基本
    的头像 发表于 01-04 11:59 2161次阅读

    鸿蒙Ability Kit程序框架服务)【组件启动规则(Stage模型)】

    组件启动规则(Stage模型) 启动组件是指一切启动或连接应用组件的行为: 启动UIAbility、ServiceExtensionAbility、DataShareExtensionAbility
    的头像 发表于 06-10 18:47 408次阅读
    <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>)】

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

    FA模型Stage模型是两套不同的应用模型,他们拥有各自的组件。FA
    的头像 发表于 06-24 16:43 189次阅读
    <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>应用组件互通综述

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

    本文介绍FA模型的三种应用组件如何启动Stage模型的UIAbility组件。
    的头像 发表于 06-25 16:00 160次阅读
    <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>UIAbility

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

    本文介绍FA模型的三种应用组件如何绑定Stage模型的ServiceExtensionAbility组件。
    的头像 发表于 06-25 10:43 86次阅读
    <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

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

    本小节介绍Stage模型的两种应用组件如何启动FA模型的PageAbility组件。
    的头像 发表于 06-26 09:50 118次阅读
    <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'>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 68次阅读
    <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'>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 102次阅读
    <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>概述

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

    为了便于开发者维护应用级别的属性配置,Stage模型将config.json中的app和deviceConfig标签提取到了app.json5中进行配置,并对部分标签名称进行了修改,具体差异见下表。
    的头像 发表于 06-27 10:01 94次阅读
    <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的切换

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

    FA模型切换到Stage模型时,开发者需要将config.json文件module标签下的配置迁移到module.json5配置文件mod
    的头像 发表于 06-27 14:16 109次阅读
    <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的切换

    鸿蒙开发Ability Kit程序框架服务:DataAbility切换 组件切换

    FA模型中的DataAbility对应Stage模型中的DataShareExtensionAbility
    的头像 发表于 06-28 14:08 37次阅读
    <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>:DataAbility切换 组件切换

    鸿蒙开发Ability Kit程序框架服务:API切换概述 API切换

    FA模型Stage模型由于线程模型和进程模型的差异,部分接口仅在
    的头像 发表于 06-28 16:23 99次阅读
    <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>:API切换概述 API切换