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

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

3天内不再提示

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

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-06-07 17:51 次阅读

分布式数据对象

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

说明:
开发前请熟悉鸿蒙开发指导文档 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]
本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

import distributedObject from '@ohos.data.distributedDataObject';

distributedDataObject.createDistributedObject

createDistributedObject(source: object): DistributedObject

创建一个分布式对象。

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

参数

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

返回值:

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

示例:

import distributedObject from '@ohos.data.distributedDataObject';
// 创建对象,对象包含4个属性类型,string,number,booleanObject
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。

参数:

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

返回值:

类型说明
booleantrue:标识设置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。

参数:

参数名类型必填说明
typestring事件类型,固定为'change',表示数据变更。
callbackCallback<{ 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。

参数:

参数名类型必填说明
typestring事件类型,固定为'change',表示数据变更。
callbackCallback<{ 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。

参数:

参数名类型必填说明
typestring事件类型,固定为'status',表示对象上下线。
callbackCallback<{ 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。

参数:

参数名类型HarmonyOSOpenHarmony鸿蒙文档籽料:mau123789是v直接拿必填说明
typestring事件类型,固定为'status',表示对象上下线。
callbackCallback<{ sessionId: string, deviceId: string, status: 'online''offline' }>
搜狗高速浏览器截图20240326151450.png

示例:

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");

审核编辑 黄宇

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

    关注

    33

    文章

    8279

    浏览量

    150056
  • 数据管理
    +关注

    关注

    1

    文章

    278

    浏览量

    19558
  • 分布式
    +关注

    关注

    1

    文章

    827

    浏览量

    74400
  • 鸿蒙
    +关注

    关注

    57

    文章

    2272

    浏览量

    42528
收藏 人收藏

    评论

    相关推荐

    HarmonyOS开发实例:【分布式数据管理

    eTS中分布式数据管理的使用,包括KVManager对象实例的创建和KVStore数据流转的使用。
    的头像 发表于 04-11 09:57 805次阅读
    HarmonyOS<b class='flag-5'>开发</b>实例:【<b class='flag-5'>分布式</b><b class='flag-5'>数据管理</b>】

    HarmonyOS分布式数据库,为啥这么牛?

    开发者无需关注索引引擎实现;业务通过一套接口调用,就可以建立起应用内的索引,同时系统还具备强大的搜索服务,提供了丰富的检索接口。 03 出色的性能表现 除了实现基础功能,HarmonyOS
    发表于 11-19 15:38

    如何通过基于云的数据管理技术实现分布式设备的态势感知?

    如何通过基于云的数据管理技术实现分布式设备的态势感知?
    发表于 05-25 06:56

    鸿蒙分布式任务调度——数据传递

    鸿蒙分布式任务调度之数据传递
    发表于 06-12 17:29

    HarmonyOS教程—基于分布式数据接口,实现多种设备上一致的数据访问体验

    1. 如何使用分布式数据库介绍分布式数据服务(Distributed Data Service,DDS) 为应用程序提供不同设备间数据
    发表于 09-26 11:40

    新能力让数据多端协同更便捷,数据跨端迁移更高效!

    作者:yijian,终端OS分布式文件系统专家;gongashi,终端OS分布式数据管理专家HarmonyOS作为分布式操作系统,其分布式
    发表于 01-11 10:41

    OpenHarmony标准设备应用开发(三)——分布式数据管理

    /js-apis-distributed-data.md数据分布式运作示意图,如下所示。实现步骤:分布式数据管理依赖 @
    发表于 04-07 18:48

    分布式数据对象:超级终端的"全局变量"

    分布式应用场景下提供简单易用的 JS 接口,轻松实现多设备间同应用的数据协同,同时设备间可以监听对象的状态和数据变更。与传统方式相比,
    发表于 06-09 15:18

    【学习打卡】OpenHarmony的分布式数据管理介绍

    使用它来做出更明智的决策,如果一个系统缺乏适当的数据管理,那就可能会导致数据孤岛、数据集之间不一致,甚至数据本身存在错误。有效的分布式
    发表于 07-15 15:49

    HarmonyOS数据管理与应用数据持久化(一)

    。 运作机制 数据管理模块包括用户首选项、键值型数据管理、关系型数据管理分布式数据对象和跨应用
    发表于 11-01 16:27

    鸿蒙原生应用开发——分布式数据对象

    分布式数据对象保存 6、分布式数据对象订阅(数据
    发表于 12-08 10:01

    分享一个有趣的鸿蒙分布式小游戏

    MainAbilitySlice 里面申请   分布式数据管理 ohos.permission.DISTRIBUTED_DATASYNC 允许
    的头像 发表于 11-01 14:29 2416次阅读
    分享一个有趣的<b class='flag-5'>鸿蒙</b><b class='flag-5'>分布式</b>小游戏

    分布式数据对象的产生背景、原理及开发案例

    在3月底发布的OpenHarmony v3.1 Release版本中,新增了分布式数据对象特性。什么是分布式数据
    的头像 发表于 04-27 15:01 1131次阅读
    <b class='flag-5'>分布式</b><b class='flag-5'>数据</b><b class='flag-5'>对象</b>的产生背景、原理及<b class='flag-5'>开发</b>案例

    鸿蒙HarmonyOS开发实例:【分布式关系型数据库】

    使用[@ohos.data.relationalStore]接口和[@ohos.distributedDeviceManager] 接口展示了在eTS中
    的头像 发表于 04-11 09:52 635次阅读
    <b class='flag-5'>鸿蒙</b>HarmonyOS<b class='flag-5'>开发</b>实例:【<b class='flag-5'>分布式</b>关系型<b class='flag-5'>数据</b>库】

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

    分布式数据管理为应用程序提供不同设备间数据库的分布式协同能力。通过调用分布式数据各个
    的头像 发表于 06-07 09:30 734次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>接口</b><b class='flag-5'>数据管理</b>:【@<b class='flag-5'>ohos.data</b>.distributedData (<b class='flag-5'>分布式</b><b class='flag-5'>数据管理</b>)】