鸿蒙开发接口数据管理:【@ohos.data.distributedDataObject (分布式数据对象)】

分布式数据对象

本模块提供管理基本数据对象的相关能力,包括创建、查询、删除、修改、订阅等;同时支持相同应用多设备间的分布式数据对象协同能力。

说明:

本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

复制代码
import distributedObject from '@ohos.data.distributedDataObject';

distributedDataObject.createDistributedObject

createDistributedObject(source: object): DistributedObject

创建一个分布式对象。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。

参数:

参数名 类型 必填 说明
source object 是 设置distributedObject的属性。

返回值:

类型 说明
DistributedObject( 创建完成的分布式对象。

示例:

复制代码
import distributedObject from '@ohos.data.distributedDataObject';
// 创建对象,对象包含4个属性类型,string,number,boolean和Object
var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, 
               parent:{mother:"jack mom",father:"jack Dad"}});

distributedObject.genSessionId

genSessionId(): string

随机创建一个sessionId。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。

返回值:

类型 说明
string 随机创建的sessionId。

示例:

复制代码
import distributedObject from '@ohos.data.distributedDataObject';
var sessionId = distributedObject.genSessionId();

DistributedObject

表示一个分布式对象。

setSessionId

setSessionId(sessionId?: string): boolean

设置同步的sessionId,当可信组网中有多个设备时,多个设备间的对象如果设置为同一个sessionId,就能自动同步。

需要权限: ohos.permission.DISTRIBUTED_DATASYNC

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。

参数:

参数名 类型 必填 说明
sessionId string 否 分布式对象在可信组网中的标识ID。如果要退出分布式组网,设置为""或不设置均可。

返回值:

类型 说明
boolean true:标识设置sessionId成功; false:标识设置sessionId失败。

示例:

复制代码
import distributedObject from '@ohos.data.distributedDataObject';
var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, 
               parent:{mother:"jack mom",father:"jack Dad"}});
//g_object加入分布式组网
g_object.setSessionId(distributedObject.genSessionId());
//设置为""退出分布式组网
g_object.setSessionId("");

on('change')

on(type: 'change', callback: Callback<{ sessionId: string, fields: Array }>): void

监听分布式对象的变更。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。

参数:

参数名 类型 必填 说明
type string 是 事件类型,固定为'change',表示数据变更。
callback Callback<{ sessionId: string, fields: Array }> 是 变更回调对象实例。 sessionId:标识变更对象的sessionId; fields:标识对象变更的属性名。

示例:

复制代码
import distributedObject from '@ohos.data.distributedDataObject';  
var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false,parent:{mother:"jack mom",father:"jack Dad"}});
globalThis.changeCallback = (sessionId, changeData) => {
    console.info("change" + sessionId);
    if (changeData != null && changeData != undefined) {
        changeData.forEach(element => {
        console.info("changed !" + element + " " + g_object[element]);
        });
    }
}
g_object.on("change", globalThis.changeCallback);

off('change')

off(type: 'change', callback?: Callback<{ sessionId: string, fields: Array }>): void

当不再进行数据变更监听时,使用此接口删除对象的变更监听。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。

参数:

参数名 类型 必填 说明
type string 是 事件类型,固定为'change',表示数据变更。
callback Callback<{ sessionId: string, fields: Array }> 否 需要删除的数据变更回调,若不设置则删除该对象所有的数据变更回调。 sessionId:标识变更对象的sessionId; fields:标识对象变更的属性名。

示例:

复制代码
import distributedObject from '@ohos.data.distributedDataObject';  
var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false,parent:{mother:"jack mom",father:"jack Dad"}});
//删除数据变更回调changeCallback
g_object.off("change", globalThis.changeCallback);
//删除所有的数据变更回调
g_object.off("change");

on('status')

on(type: 'status', callback: Callback<{ sessionId: string, networkId: string, status: 'online' | 'offline' }>): void

监听分布式对象的上下线。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。

参数:

参数名 类型 必填 说明
type string 是 事件类型,固定为'status',表示对象上下线。
callback Callback<{ sessionId: string, networkId: string, status: 'online' 'offline' }> 是

示例:

复制代码
import distributedObject from '@ohos.data.distributedDataObject';
globalThis.statusCallback = (sessionId, networkId, status) => {
    globalThis.response += "status changed " + sessionId + " " + status + " " + networkId;
}
var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false,parent:{mother:"jack mom",father:"jack Dad"}});
g_object.on("status", globalThis.statusCallback);

off('status')

off(type: 'status', callback?: Callback<{ sessionId: string, deviceId: string, status: 'online' | 'offline' }>): void

当不再进行对象上下线监听时,使用此接口删除对象的上下线监听。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。

参数:

参数名 类型 必填 说明
type string 是 事件类型,固定为'status',表示对象上下线。
callback Callback<{ sessionId: string, deviceId: string, status: 'online' 'offline' }> 否

示例:

复制代码
import distributedObject from '@ohos.data.distributedDataObject'; 
var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false,parent:{mother:"jack mom",father:"jack Dad"}});
globalThis.statusCallback = (sessionId, networkId, status) => {
    globalThis.response += "status changed " + sessionId + " " + status + " " + networkId;
}
//删除上下线回调changeCallback
g_object.off("status",globalThis.statusCallback);
//删除所有的上下线回调
g_object.off("status");
相关推荐
用户86194177207416 小时前
uni-app 的蓝牙 API 在鸿蒙上不生效?我写了个兼容层,让老代码零改动跑起来
harmonyos
HarmonyOS_SDK7 小时前
【HarmonyOS SDK Skills】挂载 Agent Skill,轻松跑通鸿蒙应用广告变现
harmonyos
闫东阳LordGalaxy8 小时前
给小艺装上数学能力:数易 App 接入智能体 FunctionComponent 与 A2A 双通路实战
harmonyos
Dream-Y.ocean9 小时前
鸿蒙PC平台逻控 PLC 编辑器适配实战:基于 Electron 壳方案的纯 JavaScript 梯形图编程与仿真引擎开发
javascript·编辑器·harmonyos
OH_TPC11 小时前
HarmonyOS APP开发---"好物清单"购物清单App,需要用到这个库
harmonyos
方方洛12 小时前
ray教程-25-附录E-端到端实战案例
人工智能·分布式·机器学习
贾伟康14 小时前
【鸿蒙心迹】个人开发者上架复盘:备案、合规与审核指南没写透的细节
华为·harmonyos
码间留白14 小时前
uni-app 鸿蒙离线打包:一个改动从源码到真机要穿过几条链
uni-app·鸿蒙·deveco·离线打包·uts插件
不爱学英文的码字机器15 小时前
2026鸿蒙远程控制软件完全选购指南:从入门到精通选型攻略
华为·harmonyos
贾伟康1 天前
【共创稿事节】HarmonyOS 7.0 BindContentCover全屏模态:从接入到生产验证
性能优化·实战·harmonyos·arkts·arkui