HarmonyOSAPI:@ohos.data.distributedDataObject分布式数据对象

joytrian
发布于 2023-4-4 16:37
浏览
0收藏

版本:v3.1 Beta

@ohos.data.distributedDataObject (分布式数据对象)

更新时间: 2023-02-24 16:50


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


说明

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

导入模块

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

distributedObject.genSessionId

genSessionId(): string

随机创建一个sessionId。

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

返回值:

类型

说明

string

随机创建的sessionId。

示例:

import distributedObject from '@ohos.data.distributedDataObject';
let sessionId = distributedObject.genSessionId();

distributedObject.createDistributedObject8+

createDistributedObject(source: object): DistributedObject

创建一个分布式数据对象。

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

参数:

参数名

类型

必填

说明

source

object

设置分布式数据对象的属性。

返回值:

类型

说明

​DistributedObject​

创建完成的分布式数据对象。

示例:

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

DistributedObject8+

表示一个分布式数据对象。在使用以下接口前,需调用​​createDistributedObject()​​获取DistributedObject对象。

setSessionId8+

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';
let 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')8+

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

监听分布式数据对象的变更。

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

参数:

参数名

类型

必填

说明

type

string

事件类型,固定为'change',表示数据变更。

callback

Callback<{ sessionId: string, fields: Array<string> }>

变更回调对象实例。

sessionId:标识变更对象的sessionId;

fields:标识对象变更的属性名。

示例:

import distributedObject from '@ohos.data.distributedDataObject';  
let 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')8+

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

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

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

参数:

参数名

类型

必填

说明

type

string

事件类型,固定为'change',表示数据变更。

callback

Callback<{ sessionId: string, fields: Array<string> }>

需要删除的数据变更回调,若不设置则删除该对象所有的数据变更回调。

sessionId:标识变更对象的sessionId;

fields:标识对象变更的属性名。

示例:

import distributedObject from '@ohos.data.distributedDataObject';  
let 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')8+

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' }>

监听上下线回调实例。

sessionId:标识变更对象的sessionId;

networkId:标识对象设备,即deviceId;

status:标识对象为'online'(上线)或'offline'(下线)的状态。

示例:

import distributedObject from '@ohos.data.distributedDataObject';
globalThis.statusCallback = (sessionId, networkId, status) => {
    globalThis.response += "status changed " + sessionId + " " + status + " " + networkId;
}
let 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')8+

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' }>

需要删除的上下线回调,若不设置则删除该对象所有的上下线回调。

sessionId:标识变更对象的sessionId;

deviceId:标识变更对象的deviceId;

status:标识对象为'online'(上线)或'offline'(下线)的状态。

示例:

import distributedObject from '@ohos.data.distributedDataObject'; 
let 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");


文章转载自:​​https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-data-distributedobject-0000001428061956-V3?catalogVersion=V3#ZH-CN_TOPIC_0000001428061956__导入模块​

已于2023-4-4 16:37:34修改
收藏
回复
举报
回复
    相关推荐