分布式數(shù)據(jù)對象
本模塊提供管理基本數(shù)據(jù)對象的相關能力,包括創(chuàng)建、查詢、刪除、修改、訂閱等;同時支持相同應用多設備間的分布式數(shù)據(jù)對象協(xié)同能力。
說明:
開發(fā)前請熟悉鴻蒙開發(fā)指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
本模塊首批接口從API version 8開始支持。后續(xù)版本的新增接口,采用上角標單獨標記接口的起始版本。
導入模塊
import distributedObject from '@ohos.data.distributedDataObject';
distributedDataObject.createDistributedObject
createDistributedObject(source: object): DistributedObject
創(chuàng)建一個分布式對象。
系統(tǒng)能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
source | object | 是 | 設置distributedObject的屬性。 |
返回值:
類型 | 說明 |
---|---|
[DistributedObject]( | 創(chuàng)建完成的分布式對象。 |
示例:
import distributedObject from '@ohos.data.distributedDataObject';
// 創(chuàng)建對象,對象包含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
隨機創(chuàng)建一個sessionId。
系統(tǒng)能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。
返回值:
類型 | 說明 |
---|---|
string | 隨機創(chuàng)建的sessionId。 |
示例:
import distributedObject from '@ohos.data.distributedDataObject';
var sessionId = distributedObject.genSessionId();
DistributedObject
表示一個分布式對象。
setSessionId
setSessionId(sessionId?: string): boolean
設置同步的sessionId,當可信組網(wǎng)中有多個設備時,多個設備間的對象如果設置為同一個sessionId,就能自動同步。
需要權限: ohos.permission.DISTRIBUTED_DATASYNC
系統(tǒng)能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
sessionId | string | 否 | 分布式對象在可信組網(wǎng)中的標識ID。如果要退出分布式組網(wǎng),設置為""或不設置均可。 |
返回值:
類型 | 說明 |
---|---|
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加入分布式組網(wǎng)
g_object.setSessionId(distributedObject.genSessionId());
//設置為""退出分布式組網(wǎng)
g_object.setSessionId("");
on('change')
on(type: 'change', callback: Callback<{ sessionId: string, fields: Array }>): void
監(jiān)聽分布式對象的變更。
系統(tǒng)能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 事件類型,固定為'change',表示數(shù)據(jù)變更。 |
callback | Callback<{ sessionId: string, fields: Array }> | 是 | 變更回調(diào)對象實例。 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
當不再進行數(shù)據(jù)變更監(jiān)聽時,使用此接口刪除對象的變更監(jiān)聽。
系統(tǒng)能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 事件類型,固定為'change',表示數(shù)據(jù)變更。 |
callback | Callback<{ sessionId: string, fields: Array }> | 否 | 需要刪除的數(shù)據(jù)變更回調(diào),若不設置則刪除該對象所有的數(shù)據(jù)變更回調(diào)。 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"}});
//刪除數(shù)據(jù)變更回調(diào)changeCallback
g_object.off("change", globalThis.changeCallback);
//刪除所有的數(shù)據(jù)變更回調(diào)
g_object.off("change");
on('status')
on(type: 'status', callback: Callback<{ sessionId: string, networkId: string, status: 'online' | 'offline' }>): void
監(jiān)聽分布式對象的上下線。
系統(tǒng)能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
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
當不再進行對象上下線監(jiān)聽時,使用此接口刪除對象的上下線監(jiān)聽。
系統(tǒng)能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。
參數(shù):
參數(shù)名 | 類型HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 | 必填 | 說明 |
---|---|---|---|
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;
}
//刪除上下線回調(diào)changeCallback
g_object.off("status",globalThis.statusCallback);
//刪除所有的上下線回調(diào)
g_object.off("status");
審核編輯 黃宇
-
接口
+關注
關注
33文章
8447瀏覽量
150720 -
數(shù)據(jù)管理
+關注
關注
1文章
285瀏覽量
19592 -
分布式
+關注
關注
1文章
858瀏覽量
74439 -
鴻蒙
+關注
關注
57文章
2302瀏覽量
42689
發(fā)布評論請先 登錄
相關推薦
評論