如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下方名片,关注公众号,公众号更新更快,同时也有更多学习资料和技术讨论群。

1、前 言
本文是基于鸿蒙跨设备协同开发07——动态控制应用接续的进一步讨论。
我们在鸿蒙跨设备协同开发06——应用接续中有提到:
-
为了接续体验,在onContinue回调中使用wantParam传输的数据需要控制在100KB以下(大数据量使用分布式数据对象进行同步)
当我们遇到需要迁移的数据大于100KB时,则需要分布式数据对象进行同步了。
需要注意:
如果是API11及之前版本,实现分布式数据对象同步功能时,需要申请 ohos.permission.DISTRIBUTED_DATASYNC 权限,如果是API 12及以上时,无需申请此权限。
2、分布式数据对象介绍
分布式数据对象提供管理基本数据对象的相关能力,包括创建、查询、删除、修改、订阅等;同时支持相同应用多设备间的分布式数据对象协同能力。
分布式数据对象由 @ohos.data.distributedDataObject 模块提供能力。导入模块代码如下:
import { distributedDataObject } from '@kit.ArkData';
核心的API有:
// 创建一个分布式数据对象create(context: Context, source: object): DataObject// 随机创建一个sessionIdgenSessionId(): string
创建一个分布式数据对象和随机创建一个sessionId示例如下:
// 创建一个分布式数据对象// 导入模块import { UIAbility } from '@kit.AbilityKit';import { BusinessError } from '@kit.BasicServicesKit';import { window } from '@kit.ArkUI';let g_object: distributedDataObject.DataObject|null = null;class SourceObject {name: stringage: numberisVis: booleanconstructor(name: string, age: number, isVis: boolean) {this.name = namethis.age = agethis.isVis = isVis}}class EntryAbility extends UIAbility {onWindowStageCreate(windowStage: window.WindowStage) {let source: SourceObject = new SourceObject("jack", 18, false);// 创建一个分布式数据对象g_object = distributedDataObject.create(this.context, source);}}// 创建一个随机sessionIdlet sessionId: string = distributedDataObject.genSessionId();
分布式数据对象的使用核心还是在于DataObject,DataObject表示一个分布式数据对象。它主要的API有:
// 设置sessionId,可信组网中有多个设备处于协同状态时,如果多个设备间的分布式对象设置为同一个sessionId,就能自动同步。// callback接口和Promise接口setSessionId(sessionId: string, callback: AsyncCallback<void>): voidsetSessionId(sessionId?: string): Promise<void>// 退出所有已加入的sessionsetSessionId(callback: AsyncCallback<void>): void// 监听/取消监听 分布式数据对象的数据变更。on(type: 'change', callback: (sessionId: string, fields: Array<string>) => void): voidoff(type: 'change', callback?: (sessionId: string, fields: Array<string>) => void): void// 监听/取消监听 分布式数据对象的上下线。on(type: 'status', callback: (sessionId: string, networkId: string, status: 'online' | 'offline' ) => void): voidoff(type: 'status', callback?:(sessionId: string, networkId: string, status: 'online' | 'offline') => void): void// 保存分布式数据对象(callback回调和Promise版本)/*对象数据保存成功后,当应用存在时不会释放对象数据,当应用退出后,重新进入应用时,恢复保存在设备上的数据。有以下几种情况时,保存的数据将会被释放:- 存储时间超过24小时。- 应用卸载。- 成功恢复数据之后。【deviceId为 local 时,表示存储在本地设备】*/save(deviceId: string, callback: AsyncCallback<SaveSuccessResponse>): voidsave(deviceId: string): Promise<SaveSuccessResponse></

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



