harmony 鸿蒙DataAbility切换

  • 2022-12-13
  • 浏览 (827)

DataAbility切换

FA模型中的DataAbility对应Stage模型中的DataShareExtensionAbility。

与ServiceExtensionAbility类似,Stage模型下的DataShareExtensionAbility为系统API,只有系统应用才可以创建。因此,FA模型的DataAbility的切换,对于系统应用和三方应用策略有所不同。下面分别介绍这两种场景。

系统应用DataAbility切换至DataShareExtensionAbility

迁移步骤和PageAbility基本一致。

  1. 在Stage应用中创建DataShareExtensionAbility。

  2. 将FA应用中DataAbility的业务代码迁移到新创建的DataShareExtensionAbility中。 DataAbility和DataShareExtensionAbility生命周期对比见下表。 |FA的DataAbility|Stage的DataShareExtensionAbility|对比描述| |——–|——–|——–| |onInitialized?(info: AbilityInfo): void|onCreate?(want: Want, callback:
    AsyncCallback<void>): void|两者调用时机一致,函数名即入参都不一样,Stage模型下增加了入参want以便开发者在创建时获取参数。| |update?(uri: string, valueBucket: rdb.ValuesBucket, predicates: dataAbility.DataAbilityPredicates, callback: AsyncCallback<number>): void|update?(uri: string, predicates: dataSharePredicates.DataSharePredicates, value: ValuesBucket, callback: AsyncCallback<number>): void|两者意义和调用时机一致,参数顺序和参数类型略有不同,需要简单改造。| |query?(uri: string, columns: Array<string>, predicates: dataAbility.DataAbilityPredicates, callback: AsyncCallback<ResultSet>): void|query?(uri: string, predicates: dataSharePredicates.DataSharePredicates, columns: Array<string>, callback: AsyncCallback<Object>): void|两者意义和调用时机一致,参数顺序和参数类型略有不同,需要简单改造。| |delete?(uri: string, predicates: dataAbility.DataAbilityPredicates, callback: AsyncCallback<number>): void|delete?(uri: string, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<number>): void|两者意义和调用时机一致,参数类型略有不同,需要简单改造。| |normalizeUri?(uri: string, callback: AsyncCallback<string>): void|normalizeUri?(uri: string, callback: AsyncCallback<string>): void|两者意义和调用时机一致,参数也一致。| |batchInsert?(uri: string, valueBuckets: Array<rdb.ValuesBucket>, callback: AsyncCallback<number>): void|batchInsert?(uri: string, values: Array<ValuesBucket>, callback: AsyncCallback<number>): void|两者意义和调用时机一致,参数类型略有不同,需要简单改造。| |denormalizeUri?(uri: string, callback: AsyncCallback<string>): void|denormalizeUri?(uri: string, callback: AsyncCallback<string>): void|两者意义和调用时机一致,参数也一致。| |insert?(uri: string, valueBucket: rdb.ValuesBucket, callback: AsyncCallback<number>): void|insert?(uri: string, value: ValuesBucket, callback: AsyncCallback<number>): void|两者意义和调用时机一致,参数类型略有不同,需要简单改造。| |openFile?(uri: string, mode: string, callback: AsyncCallback<number>): void|NA|Stage模型不支持uri跨进程访问,建议通过want携带FD和文件信息进行跨进程文件访问。| |getFileTypes?(uri: string, mimeTypeFilter: string, callback: AsyncCallback<Array<string>>): void|NA|Stage模型不支持uri跨进程访问,建议通过want携带FD和文件信息进行跨进程文件访问。| |getType?(uri: string, callback: AsyncCallback<string>): void|NA|Stage模型不支持uri跨进程访问,建议通过want携带FD和文件信息进行跨进程文件访问。| |executeBatch?(ops: Array<DataAbilityOperation>, callback: AsyncCallback<Array<DataAbilityResult>>): void|NA|DataShareExtensionAbility不提供该接口,开发者需根据业务功能重新实现。| |call?(method: string, arg: string, extras: PacMap, callback: AsyncCallback<PacMap>): void|NA|DataShareExtensionAbility不提供该接口,开发者需根据业务功能重新实现。|

三方应用DataAbility改造为公共模块

Stage模型三方应用不能对其他三方提供数据,应用需要根据具体业务选择切换方案。

DataAbility业务类型 切换DataShareExtension策略
对三方提供数据 需根据业务场景匹配到系统对应的场景化ExtensionAbility
应用内使用的数据 对应用内其他组件提供数据,建议提取公共模块。

你可能感兴趣的鸿蒙文章

harmony 鸿蒙Ability Kit(程序框架服务)

harmony 鸿蒙获取应用异常退出原因

harmony 鸿蒙UIAbility备份恢复

harmony 鸿蒙使用显式Want启动应用组件

harmony 鸿蒙Ability Kit简介

harmony 鸿蒙AbilityStage组件容器

harmony 鸿蒙访问DataAbility

harmony 鸿蒙FA模型访问Stage模型DataShareExtensionAbility

harmony 鸿蒙常见action与entities(不推荐使用)

harmony 鸿蒙API切换概述

0  赞