当前位置: 首页 > news >正文

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

分布式数据对象

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

说明:

本模块首批接口从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,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。

参数:

参数名类型必填说明
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。

参数:

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

相关文章:

  • 总结开发过程遇到问题有哪些渠道可以寻找解决方案
  • 遗址博物馆ar互动展示软件提供丰富的趣味化体验
  • springboot编写简述01
  • linux的编辑安装
  • 基于JSP技术的社区疫情防控管理信息系统
  • 车载开发之预置无源码apk到Android系统(带so文件)
  • 【JavaScript】【分享】关于this
  • CSS实现一个雨滴滑落效果
  • 新奇css模板
  • Java/Golang:活用interface,增加程序扩展性
  • 堆和栈的空间利用率
  • 2024下《系统集成项目管理工程师》50个高频考点汇总!值得收藏
  • 怎么建设高性能多核DSP+FPGA实验室?一起来河北工程大学看看
  • HTML中Canvas关键知识点总结
  • 一场决定未来的战役,又是梦想起航的地方
  • 【译】JS基础算法脚本:字符串结尾
  • Idea+maven+scala构建包并在spark on yarn 运行
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • maya建模与骨骼动画快速实现人工鱼
  • Netty源码解析1-Buffer
  • 聊聊redis的数据结构的应用
  • 你真的知道 == 和 equals 的区别吗?
  • 新书推荐|Windows黑客编程技术详解
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • Java性能优化之JVM GC(垃圾回收机制)
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • # C++之functional库用法整理
  • #AngularJS#$sce.trustAsResourceUrl
  • (2)(2.10) LTM telemetry
  • (C11) 泛型表达式
  • (ibm)Java 语言的 XPath API
  • (笔记)M1使用hombrew安装qemu
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)原始图像数据和PDF中的图像数据
  • *** 2003
  • ****Linux下Mysql的安装和配置
  • .md即markdown文件的基本常用编写语法
  • .mysql secret在哪_MYSQL基本操作(上)
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NetCore部署微服务(二)
  • @KafkaListener注解详解(一)| 常用参数详解
  • @property @synthesize @dynamic 及相关属性作用探究
  • @RequestBody与@ModelAttribute
  • [ 蓝桥杯Web真题 ]-布局切换
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [100天算法】-x 的平方根(day 61)
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [2018-01-08] Python强化周的第一天
  • [20181219]script使用小技巧.txt
  • [AI Google] 使用 Gemini 取得更多成就:试用 1.5 Pro 和更多智能功能