分布式數(shù)據(jù)對(duì)象
本模塊提供管理基本數(shù)據(jù)對(duì)象的相關(guān)能力,包括創(chuàng)建、查詢、刪除、修改、訂閱等;同時(shí)支持相同應(yīng)用多設(shè)備間的分布式數(shù)據(jù)對(duì)象協(xié)同能力。
說(shuō)明:
開(kāi)發(fā)前請(qǐng)熟悉鴻蒙開(kāi)發(fā)指導(dǎo)文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]
本模塊首批接口從API version 8開(kāi)始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。
導(dǎo)入模塊
import distributedObject from '@ohos.data.distributedDataObject';
distributedDataObject.createDistributedObject
createDistributedObject(source: object): DistributedObject
創(chuàng)建一個(gè)分布式對(duì)象。
系統(tǒng)能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。
參數(shù):
| 參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
|---|---|---|---|
| source | object | 是 | 設(shè)置distributedObject的屬性。 |
返回值:
| 類型 | 說(shuō)明 |
|---|---|
| [DistributedObject]( | 創(chuàng)建完成的分布式對(duì)象。 |
示例:
import distributedObject from '@ohos.data.distributedDataObject';
// 創(chuàng)建對(duì)象,對(duì)象包含4個(gè)屬性類型,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
隨機(jī)創(chuàng)建一個(gè)sessionId。
系統(tǒng)能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。
返回值:
| 類型 | 說(shuō)明 |
|---|---|
| string | 隨機(jī)創(chuàng)建的sessionId。 |
示例:
import distributedObject from '@ohos.data.distributedDataObject';
var sessionId = distributedObject.genSessionId();
DistributedObject
表示一個(gè)分布式對(duì)象。
setSessionId
setSessionId(sessionId?: string): boolean
設(shè)置同步的sessionId,當(dāng)可信組網(wǎng)中有多個(gè)設(shè)備時(shí),多個(gè)設(shè)備間的對(duì)象如果設(shè)置為同一個(gè)sessionId,就能自動(dòng)同步。
需要權(quán)限: ohos.permission.DISTRIBUTED_DATASYNC
系統(tǒng)能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。
參數(shù):
| 參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
|---|---|---|---|
| sessionId | string | 否 | 分布式對(duì)象在可信組網(wǎng)中的標(biāo)識(shí)ID。如果要退出分布式組網(wǎng),設(shè)置為""或不設(shè)置均可。 |
返回值:
| 類型 | 說(shuō)明 |
|---|---|
| boolean | true:標(biāo)識(shí)設(shè)置sessionId成功; false:標(biāo)識(shí)設(shè)置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());
//設(shè)置為""退出分布式組網(wǎng)
g_object.setSessionId("");
on('change')
on(type: 'change', callback: Callback<{ sessionId: string, fields: Array }>): void
監(jiān)聽(tīng)分布式對(duì)象的變更。
系統(tǒng)能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。
參數(shù):
| 參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
|---|---|---|---|
| type | string | 是 | 事件類型,固定為'change',表示數(shù)據(jù)變更。 |
| callback | Callback<{ sessionId: string, fields: Array }> | 是 | 變更回調(diào)對(duì)象實(shí)例。 sessionId:標(biāo)識(shí)變更對(duì)象的sessionId; fields:標(biāo)識(shí)對(duì)象變更的屬性名。 |
示例:
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
當(dāng)不再進(jìn)行數(shù)據(jù)變更監(jiān)聽(tīng)時(shí),使用此接口刪除對(duì)象的變更監(jiān)聽(tīng)。
系統(tǒng)能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。
參數(shù):
| 參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
|---|---|---|---|
| type | string | 是 | 事件類型,固定為'change',表示數(shù)據(jù)變更。 |
| callback | Callback<{ sessionId: string, fields: Array }> | 否 | 需要?jiǎng)h除的數(shù)據(jù)變更回調(diào),若不設(shè)置則刪除該對(duì)象所有的數(shù)據(jù)變更回調(diào)。 sessionId:標(biāo)識(shí)變更對(duì)象的sessionId; fields:標(biāo)識(shí)對(duì)象變更的屬性名。 |
示例:
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)分布式對(duì)象的上下線。
系統(tǒng)能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。
參數(shù):
| 參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
|---|---|---|---|
| type | string | 是 | 事件類型,固定為'status',表示對(duì)象上下線。 |
| 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
當(dāng)不再進(jìn)行對(duì)象上下線監(jiān)聽(tīng)時(shí),使用此接口刪除對(duì)象的上下線監(jiān)聽(tīng)。
系統(tǒng)能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject。
參數(shù):
| 參數(shù)名 | 類型HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 | 必填 | 說(shuō)明 |
|---|---|---|---|
| type | string | 是 | 事件類型,固定為'status',表示對(duì)象上下線。 |
| 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");
審核編輯 黃宇
-
接口
+關(guān)注
關(guān)注
33文章
9307瀏覽量
155712 -
數(shù)據(jù)管理
+關(guān)注
關(guān)注
1文章
325瀏覽量
20425 -
分布式
+關(guān)注
關(guān)注
1文章
1040瀏覽量
76237 -
鴻蒙
+關(guān)注
關(guān)注
60文章
2746瀏覽量
45139
發(fā)布評(píng)論請(qǐng)先 登錄
HarmonyOS開(kāi)發(fā)實(shí)例:【分布式數(shù)據(jù)管理】
HarmonyOS Next 應(yīng)用元服務(wù)開(kāi)發(fā)-分布式數(shù)據(jù)對(duì)象遷移數(shù)據(jù)權(quán)限與基礎(chǔ)數(shù)據(jù)
HarmonyOS Next 應(yīng)用元服務(wù)開(kāi)發(fā)-分布式數(shù)據(jù)對(duì)象遷移數(shù)據(jù)文件資產(chǎn)遷移
HarmonyOS分布式數(shù)據(jù)庫(kù),為啥這么牛?
如何通過(guò)基于云的數(shù)據(jù)管理技術(shù)實(shí)現(xiàn)分布式設(shè)備的態(tài)勢(shì)感知?
新能力讓數(shù)據(jù)多端協(xié)同更便捷,數(shù)據(jù)跨端遷移更高效!
OpenHarmony標(biāo)準(zhǔn)設(shè)備應(yīng)用開(kāi)發(fā)(三)——分布式數(shù)據(jù)管理
分布式數(shù)據(jù)對(duì)象:超級(jí)終端的"全局變量"
【學(xué)習(xí)打卡】OpenHarmony的分布式數(shù)據(jù)管理介紹
HarmonyOS數(shù)據(jù)管理與應(yīng)用數(shù)據(jù)持久化(一)
鴻蒙原生應(yīng)用開(kāi)發(fā)——分布式數(shù)據(jù)對(duì)象
分享一個(gè)有趣的鴻蒙分布式小游戲
分布式數(shù)據(jù)對(duì)象的產(chǎn)生背景、原理及開(kāi)發(fā)案例
鴻蒙HarmonyOS開(kāi)發(fā)實(shí)例:【分布式關(guān)系型數(shù)據(jù)庫(kù)】
鴻蒙開(kāi)發(fā)接口數(shù)據(jù)管理:【@ohos.data.distributedData (分布式數(shù)據(jù)管理)】

鴻蒙開(kāi)發(fā)接口數(shù)據(jù)管理:【@ohos.data.distributedDataObject (分布式數(shù)據(jù)對(duì)象)】

評(píng)論