分布式數據對象
本模塊提供管理基本數據對象的相關能力,包括創建、查詢、刪除、修改、訂閱等;同時支持相同應用多設備間的分布式數據對象協同能力。
說明:
開發前請熟悉鴻蒙開發指導文檔 :[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。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
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。
參數:
參數名 | 類型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;
}
//刪除上下線回調changeCallback
g_object.off("status",globalThis.statusCallback);
//刪除所有的上下線回調
g_object.off("status");
審核編輯 黃宇
-
接口
+關注
關注
33文章
8650瀏覽量
151418 -
數據管理
+關注
關注
1文章
297瀏覽量
19633 -
分布式
+關注
關注
1文章
911瀏覽量
74563 -
鴻蒙
+關注
關注
57文章
2371瀏覽量
42911
發布評論請先 登錄
相關推薦
評論