1# @ohos.data.distributedDataObject (分布式数据对象) 2 3本模块提供管理基本数据对象的相关能力,包括创建、查询、删除、修改、订阅等;同时支持相同应用多设备间的分布式数据对象协同能力。 4 5> **说明:** 6> 7> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8 9 10## 导入模块 11 12```js 13import distributedObject from '@ohos.data.distributedDataObject'; 14``` 15 16## distributedObject.create<sup>9+</sup> 17 18create(context: Context, source: object): DataObject 19 20创建一个分布式数据对象。 21 22**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 23 24**参数:** 25 26 | 参数名 | 类型 | 必填 | 说明 | 27 | -------- | -------- | -------- | -------- | 28 | context | Context | 是 | 应用的上下文。 <br>FA模型的应用Context定义见[Context](js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](js-apis-inner-application-uiAbilityContext.md)。 | 29 | source | object | 是 | 设置分布式数据对象的属性。 | 30 31**返回值:** 32 33| 类型 | 说明 | 34| -------- | -------- | 35| [DataObject](#dataobject) | 创建完成的分布式数据对象。 | 36 37**示例:** 38 39FA模型示例: 40 41```js 42// 导入模块 43import distributedObject from '@ohos.data.distributedDataObject'; 44import featureAbility from '@ohos.ability.featureAbility'; 45// 获取context 46let context = featureAbility.getContext(); 47// 创建对象,该对象包含4个属性类型:string、number、boolean和Object 48let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); 49``` 50 51Stage模型示例: 52 53```ts 54// 导入模块 55import distributedObject from '@ohos.data.distributedDataObject'; 56import UIAbility from '@ohos.app.ability.UIAbility'; 57 58let g_object = null; 59 60class EntryAbility extends UIAbility { 61 onWindowStageCreate(windowStage){ 62 // 创建对象,该对象包含4个属性类型:string、number、boolean和Object 63 g_object = distributedObject.create(this.context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); 64 } 65} 66``` 67 68## distributedObject.genSessionId 69 70genSessionId(): string 71 72随机创建一个sessionId。 73 74**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 75 76**返回值:** 77 78 | 类型 | 说明 | 79 | -------- | -------- | 80 | string | 随机创建的sessionId。 | 81 82**示例:** 83 84```js 85import distributedObject from '@ohos.data.distributedDataObject'; 86let sessionId = distributedObject.genSessionId(); 87``` 88 89## SaveSuccessResponse<sup>9+</sup> 90 91save接口回调信息。 92 93**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 94 95| 名称 | 类型 | 必填 | 说明 | 96| -------- | -------- | -------- | -------- | 97| sessionId | string | 是 | 多设备协同的唯一标识。 | 98| version | number | 是 | 已保存对象的版本。 | 99| deviceId | string | 是 | 存储数据的设备号,标识需要保存对象的设备。默认为"local",标识本地设备;可自定义设置其他标识设备的字符串。 | 100 101## RevokeSaveSuccessResponse<sup>9+</sup> 102 103revokeSave接口回调信息。 104 105**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 106 107| 名称 | 类型 | 必填 | 说明 | 108| -------- | -------- | -------- | -------- | 109| sessionId | string | 是 | 多设备协同的唯一标识。 | 110 111## DataObject 112 113表示一个分布式数据对象。在使用以下接口前,需调用[create()](#distributedobjectcreate9)获取DataObject对象。 114 115### setSessionId<sup>9+</sup> 116 117setSessionId(sessionId: string, callback: AsyncCallback<void>): void 118 119设置同步的sessionId,当可信组网中有多个设备时,多个设备间的对象如果设置为同一个sessionId,就能自动同步。 120 121**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC。 122 123**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 124 125**参数:** 126 127 | 参数名 | 类型 | 必填 | 说明 | 128 | -------- | -------- | -------- | -------- | 129 | sessionId | string | 是 | 分布式数据对象在可信组网中的标识ID。| 130 | callback | AsyncCallback<void> | 是 | 加入session的异步回调。| 131 132**错误码:** 133 134 以下错误码的详细介绍参见[分布式数据对象错误码](../errorcodes/errorcode-distributed-dataObject.md)。 135 136 | 错误码ID | 错误信息 | 137 | -------- | -------- | 138 | 15400001 | Create table failed.| 139 140**示例:** 141 142```js 143// g_object加入分布式组网 144g_object.setSessionId(distributedObject.genSessionId(), ()=>{ 145 console.info("join session"); 146}); 147``` 148 149### setSessionId<sup>9+</sup> 150 151setSessionId(callback: AsyncCallback<void>): void 152 153退出所有已加入的session。 154 155**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC。 156 157**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 158 159**参数:** 160 161 | 参数名 | 类型 | 必填 | 说明 | 162 | -------- | -------- | -------- | -------- | 163 | callback | AsyncCallback<void> | 是 | 退出所有已加入session的异步回调。 | 164 165**错误码:** 166 167 以下错误码的详细介绍参见[分布式数据对象错误码](../errorcodes/errorcode-distributed-dataObject.md)。 168 169 | 错误码ID | 错误信息 | 170 | -------- | -------- | 171 | 15400001 | Create table failed.| 172 173**示例:** 174 175```js 176// g_object加入分布式组网 177g_object.setSessionId(distributedObject.genSessionId(), ()=>{ 178 console.info("join session"); 179}); 180// 退出分布式组网 181g_object.setSessionId(() => { 182 console.info("leave all lession."); 183}); 184``` 185 186### setSessionId<sup>9+</sup> 187 188setSessionId(sessionId?: string): Promise<void> 189 190设置同步的sessionId,当可信组网中有多个设备时,多个设备间的对象如果设置为同一个sessionId,就能自动同步。 191 192**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC。 193 194**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 195 196**参数:** 197 198 | 参数名 | 类型 | 必填 | 说明 | 199 | -------- | -------- | -------- | -------- | 200 | sessionId | string | 否 | 分布式数据对象在可信组网中的标识ID。如果要退出分布式组网,设置为""或不设置均可。 | 201 202**返回值:** 203 204| 类型 | 说明 | 205| -------- | -------- | 206| Promise<void> | Promise对象。| 207 208**错误码:** 209 210 以下错误码的详细介绍参见[分布式数据对象错误码](../errorcodes/errorcode-distributed-dataObject.md)。 211 212 | 错误码ID | 错误信息 | 213 | -------- | -------- | 214 | 15400001 | Create table failed.| 215 216**示例:** 217 218```js 219// g_object加入分布式组网 220g_object.setSessionId(distributedObject.genSessionId()).then (()=>{ 221 console.info("join session."); 222 }).catch((error)=>{ 223 console.info("error:" + error.code + error.message); 224}); 225// 退出分布式组网 226g_object.setSessionId().then (()=>{ 227 console.info("leave all lession."); 228 }).catch((error)=>{ 229 console.info("error:" + error.code + error.message); 230}); 231``` 232 233### on('change')<sup>9+</sup> 234 235on(type: 'change', callback: Callback<{ sessionId: string, fields: Array<string> }>): void 236 237监听分布式数据对象的数据变更。 238 239**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 240 241**参数:** 242 243 | 参数名 | 类型 | 必填 | 说明 | 244 | -------- | -------- | -------- | -------- | 245 | type | string | 是 | 事件类型,固定为'change',表示数据变更。 | 246 | callback | Callback<{ sessionId: string, fields: Array<string> }> | 是 | 变更回调对象实例。<br>sessionId:标识变更对象的sessionId; <br>fields:标识对象变更的属性名。 | 247 248**示例:** 249 250```js 251globalThis.changeCallback = (sessionId, changeData) => { 252 console.info("change" + sessionId); 253 if (changeData != null && changeData != undefined) { 254 changeData.forEach(element => { 255 console.info("changed !" + element + " " + g_object[element]); 256 }); 257 } 258} 259g_object.on("change", globalThis.changeCallback); 260``` 261 262### off('change')<sup>9+</sup> 263 264off(type: 'change', callback?: Callback<{ sessionId: string, fields: Array<string> }>): void 265 266当不再进行数据变更监听时,使用此接口删除对象的变更监听。 267 268**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 269 270**参数:** 271 272 | 参数名 | 类型 | 必填 | 说明 | 273 | -------- | -------- | -------- | -------- | 274 | type | string | 是 | 事件类型,固定为'change',表示数据变更。 | 275 | callback | Callback<{ sessionId: string, fields: Array<string> }> | 否 | 需要删除的数据变更回调,若不设置则删除该对象所有的数据变更回调。<br>sessionId:标识变更对象的sessionId; <br>fields:标识对象变更的属性名。 | 276 277 278**示例:** 279 280```js 281// 删除数据变更回调changeCallback 282g_object.off("change", globalThis.changeCallback); 283// 删除所有的数据变更回调 284g_object.off("change"); 285``` 286 287### on('status')<sup>9+</sup> 288 289on(type: 'status', callback: Callback<{ sessionId: string, networkId: string, status: 'online' | 'offline' }>): void 290 291监听分布式数据对象的上下线。 292 293**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 294 295**参数:** 296 297 | 参数名 | 类型 | 必填 | 说明 | 298 | -------- | -------- | -------- | -------- | 299 | type | string | 是 | 事件类型,固定为'status',表示对象上下线。 | 300 | callback | Callback<{ sessionId: string, networkId: string, status: 'online' \| 'offline' }> | 是 | 监听上下线回调实例。<br>sessionId:标识变更对象的sessionId; <br>networkId:标识对象设备,即deviceId; <br>status:标识对象为'online'(上线)或'offline'(下线)的状态。 | 301 302**示例:** 303 304```js 305globalThis.statusCallback = (sessionId, networkId, status) => { 306 globalThis.response += "status changed " + sessionId + " " + status + " " + networkId; 307} 308g_object.on("status", globalThis.statusCallback); 309``` 310 311### off('status')<sup>9+</sup> 312 313off(type: 'status', callback?: Callback<{ sessionId: string, deviceId: string, status: 'online' | 'offline' }>): void 314 315当不再进行对象上下线监听时,使用此接口删除对象的上下线监听。 316 317**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 318 319**参数:** 320 321 | 参数名 | 类型 | 必填 | 说明 | 322 | -------- | -------- | -------- | -------- | 323 | type | string | 是 | 事件类型,固定为'status',表示对象上下线。 | 324 | callback | Callback<{ sessionId: string, deviceId: string, status: 'online' \| 'offline' }> | 否 | 需要删除的上下线回调,若不设置则删除该对象所有的上下线回调。<br>sessionId:标识变更对象的sessionId; <br>deviceId:标识变更对象的deviceId; <br>status:标识对象为'online'(上线)或'offline'(下线)的状态。 | 325 326 327**示例:** 328 329```js 330globalThis.statusCallback = (sessionId, networkId, status) => { 331 globalThis.response += "status changed " + sessionId + " " + status + " " + networkId; 332} 333// 删除上下线回调changeCallback 334g_object.off("status",globalThis.statusCallback); 335// 删除所有的上下线回调 336g_object.off("status"); 337``` 338 339### save<sup>9+</sup> 340 341save(deviceId: string, callback: AsyncCallback<SaveSuccessResponse>): void 342 343保存分布式数据对象。使用callback方式异步回调。 344 345对象数据保存成功后,当应用存在时不会释放对象数据,当应用退出后,重新进入应用时,恢复保存在设备上的数据。 346 347有以下几种情况时,保存的数据将会被释放: 348 349- 存储时间超过24小时。 350- 应用卸载。 351- 成功恢复数据之后。 352 353**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 354 355**参数:** 356 357 | 参数名 | 类型 | 必填 | 说明 | 358 | -------- | -------- | -------- | -------- | 359 | deviceId | string | 是 | 保存数据的deviceId,当deviceId为"local",代表存储在本地设备。 | 360 | callback | AsyncCallback<[SaveSuccessResponse](#savesuccessresponse9)> | 是 | 回调函数。返回SaveSuccessResponse,包含sessionId、version、deviceId等信息。 | 361 362**示例:** 363 364```ts 365g_object.setSessionId("123456"); 366g_object.save("local", (err, result) => { 367 if (err) { 368 console.info("save failed, error code = " + err.code); 369 console.info("save failed, error message: " + err.message); 370 return; 371 } 372 console.info("save callback"); 373 console.info("save sessionId: " + result.sessionId); 374 console.info("save version: " + result.version); 375 console.info("save deviceId: " + result.deviceId); 376}); 377``` 378 379### save<sup>9+</sup> 380 381save(deviceId: string): Promise<SaveSuccessResponse> 382 383保存分布式数据对象。使用Promise方式作为异步回调。 384 385对象数据保存成功后,当应用存在时不会释放对象数据,当应用退出后,重新进入应用时,恢复保存在设备上的数据。 386 387有以下几种情况时,保存的数据将会被释放: 388 389- 存储时间超过24小时。 390- 应用卸载。 391- 成功恢复数据之后。 392 393**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 394 395**参数:** 396 397 | 参数名 | 类型 | 必填 | 说明 | 398 | -------- | -------- | -------- | -------- | 399 | deviceId | string | 是 | 保存数据的设备号,当deviceId默认为"local",标识需要保存对象的设备。 | 400 401**返回值:** 402 403 | 类型 | 说明 | 404 | -------- | -------- | 405 | Promise<[SaveSuccessResponse](#savesuccessresponse9)> | Promise对象。返回SaveSuccessResponse,包含sessionId、version、deviceId等信息。| 406 407**示例:** 408 409```js 410g_object.setSessionId("123456"); 411g_object.save("local").then((result) => { 412 console.info("save callback"); 413 console.info("save sessionId " + result.sessionId); 414 console.info("save version " + result.version); 415 console.info("save deviceId " + result.deviceId); 416}).catch((err) => { 417 console.info("save failed, error code = " + err.code); 418 console.info("save failed, error message: " + err.message); 419}); 420``` 421 422### revokeSave<sup>9+</sup> 423 424revokeSave(callback: AsyncCallback<RevokeSaveSuccessResponse>): void 425 426撤回保存的分布式数据对象。使用callback方式作为异步方法。 427 428如果对象保存在本地设备,那么将删除所有受信任设备上所保存的数据。 429如果对象保存在其他设备,那么将删除本地设备上的数据。 430 431**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 432 433**参数:** 434 435 | 参数名 | 类型 | 必填 | 说明 | 436 | -------- | -------- | -------- | -------- | 437 | callback | AsyncCallback<[RevokeSaveSuccessResponse](#revokesavesuccessresponse9)> | 是 | 回调函数。返回RevokeSaveSuccessResponse,包含sessionId。 | 438 439**示例:** 440 441```js 442g_object.setSessionId("123456"); 443// 持久化数据 444g_object.save("local", (err, result) => { 445 if (err) { 446 console.info("save failed, error code = " + err.code); 447 console.info("save failed, error message: " + err.message); 448 return; 449 } 450 console.info("save callback"); 451 console.info("save sessionId: " + result.sessionId); 452 console.info("save version: " + result.version); 453 console.info("save deviceId: " + result.deviceId); 454}); 455// 删除持久化保存的数据 456g_object.revokeSave((err, result) => { 457 if (err) { 458 console.info("revokeSave failed, error code = " + err.code); 459 console.info("revokeSave failed, error message: " + err.message); 460 return; 461 } 462 console.info("revokeSave callback"); 463 console.info("revokeSave sessionId " + result.sessionId); 464}); 465``` 466 467### revokeSave<sup>9+</sup> 468 469revokeSave(): Promise<RevokeSaveSuccessResponse> 470 471撤回保存的分布式数据对象。使用Promise方式作为异步方法。 472 473如果对象保存在本地设备,那么将删除所有受信任设备上所保存的数据。 474如果对象保存在其他设备,那么将删除本地设备上的数据。 475 476**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 477 478**返回值:** 479 480 | 类型 | 说明 | 481 | -------- | -------- | 482 | Promise<[RevokeSaveSuccessResponse](#revokesavesuccessresponse9)> | Promise对象。返回RevokeSaveSuccessResponse,包含sessionId。 | 483 484**示例:** 485 486```ts 487g_object.setSessionId("123456"); 488// 持久化数据 489g_object.save("local").then((result) => { 490 console.info("save callback"); 491 console.info("save sessionId " + result.sessionId); 492 console.info("save version " + result.version); 493 console.info("save deviceId " + result.deviceId); 494}).catch((err) => { 495 console.info("save failed, error code = " + err.code); 496 console.info("save failed, error message: " + err.message); 497}); 498// 删除持久化保存的数据 499g_object.revokeSave().then((result) => { 500 console.info("revokeSave callback"); 501 console.info("sessionId" + result.sessionId); 502}).catch((err)=> { 503 console.info("revokeSave failed, error code = " + err.code); 504 console.info("revokeSave failed, error message = " + err.message); 505}); 506``` 507 508## distributedObject.createDistributedObject<sup>(deprecated)</sup> 509 510createDistributedObject(source: object): DistributedObject 511 512 513创建一个分布式数据对象。 514 515> **说明:** 516> 517> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用distributedObject.create替代。 518 519**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 520 521**参数:** 522 523 | 参数名 | 类型 | 必填 | 说明 | 524 | -------- | -------- | -------- | -------- | 525 | source | object | 是 | 设置分布式数据对象的属性。 | 526 527**返回值:** 528 529| 类型 | 说明 | 530| -------- | -------- | 531| [DistributedObject](#distributedobjectdeprecated) | 创建完成的分布式数据对象。 | 532 533**示例:** 534 535```js 536import distributedObject from '@ohos.data.distributedDataObject'; 537// 创建对象,对象包含4个属性类型,string,number,boolean和Object 538let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); 539``` 540 541## DistributedObject<sup>(deprecated)</sup> 542 543表示一个分布式数据对象。在使用以下接口前,需调用[createDistributedObject()](#distributedobjectcreatedistributedobjectdeprecated)获取DistributedObject对象。 544 545### setSessionId<sup>(deprecated)</sup> 546 547setSessionId(sessionId?: string): boolean 548 549设置同步的sessionId,当可信组网中有多个设备时,多个设备间的对象如果设置为同一个sessionId,就能自动同步。 550 551> **说明:** 552> 553> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用[setSessionId](#setsessionid9)替代。 554 555**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC。 556 557**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 558 559**参数:** 560 561 | 参数名 | 类型 | 必填 | 说明 | 562 | -------- | -------- | -------- | -------- | 563 | sessionId | string | 否 | 分布式数据对象在可信组网中的标识ID。如果要退出分布式组网,设置为""或不设置均可。 | 564 565**返回值:** 566 567 | 类型 | 说明 | 568 | -------- | -------- | 569 | boolean | true:标识设置sessionId成功。 <br>false:标识设置sessionId失败。 | 570 571**示例:** 572 573```js 574import distributedObject from '@ohos.data.distributedDataObject'; 575let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}});; 576// g_object加入分布式组网 577g_object.setSessionId(distributedObject.genSessionId()); 578// 设置为""退出分布式组网 579g_object.setSessionId(""); 580``` 581 582### on('change')<sup>(deprecated)</sup> 583 584on(type: 'change', callback: Callback<{ sessionId: string, fields: Array<string> }>): void 585 586监听分布式数据对象的变更。 587 588> **说明:** 589> 590> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用[on('change')](#onchange9)替代。 591 592**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 593 594**参数:** 595 596 | 参数名 | 类型 | 必填 | 说明 | 597 | -------- | -------- | -------- | -------- | 598 | type | string | 是 | 事件类型,固定为'change',表示数据变更。 | 599 | callback | Callback<{ sessionId: string, fields: Array<string> }> | 是 | 变更回调对象实例。<br>sessionId:标识变更对象的sessionId; <br>fields:标识对象变更的属性名。 | 600 601**示例:** 602 603```js 604import distributedObject from '@ohos.data.distributedDataObject'; 605let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); 606globalThis.changeCallback = (sessionId, changeData) => { 607 console.info("change" + sessionId); 608 if (changeData != null && changeData != undefined) { 609 changeData.forEach(element => { 610 console.info("changed !" + element + " " + g_object[element]); 611 }); 612 } 613} 614g_object.on("change", globalThis.changeCallback); 615``` 616 617### off('change')<sup>(deprecated)</sup> 618 619off(type: 'change', callback?: Callback<{ sessionId: string, fields: Array<string> }>): void 620 621当不再进行数据变更监听时,使用此接口删除对象的变更监听。 622 623> **说明:** 624> 625> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用[off('change')](#offchange9)替代。 626 627**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 628 629**参数:** 630 631 | 参数名 | 类型 | 必填 | 说明 | 632 | -------- | -------- | -------- | -------- | 633 | type | string | 是 | 事件类型,固定为'change',表示数据变更。 | 634 | callback | Callback<{ sessionId: string, fields: Array<string> }> | 否 | 需要删除的数据变更回调,若不设置则删除该对象所有的数据变更回调。<br>sessionId:标识变更对象的sessionId; <br>fields:标识对象变更的属性名。 | 635 636 637**示例:** 638 639```js 640import distributedObject from '@ohos.data.distributedDataObject'; 641let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); 642// 删除数据变更回调changeCallback 643g_object.off("change", globalThis.changeCallback); 644// 删除所有的数据变更回调 645g_object.off("change"); 646``` 647 648### on('status')<sup>(deprecated)</sup> 649 650on(type: 'status', callback: Callback<{ sessionId: string, networkId: string, status: 'online' | 'offline' }>): void 651 652监听分布式数据对象的上下线。 653 654> **说明:** 655> 656> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用[on('status')](#onstatus9)替代。 657 658**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 659 660**参数:** 661 662 | 参数名 | 类型 | 必填 | 说明 | 663 | -------- | -------- | -------- | -------- | 664 | type | string | 是 | 事件类型,固定为'status',表示对象上下线。 | 665 | callback | Callback<{ sessionId: string, networkId: string, status: 'online' \| 'offline' }> | 是 | 监听上下线回调实例。<br>sessionId:标识变更对象的sessionId; <br>networkId:标识对象设备,即deviceId; <br>status:标识对象为'online'(上线)或'offline'(下线)的状态。 | 666 667**示例:** 668 669```js 670import distributedObject from '@ohos.data.distributedDataObject'; 671globalThis.statusCallback = (sessionId, networkId, status) => { 672 globalThis.response += "status changed " + sessionId + " " + status + " " + networkId; 673} 674let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); 675g_object.on("status", globalThis.statusCallback); 676``` 677 678### off('status')<sup>(deprecated)</sup> 679 680off(type: 'status', callback?: Callback<{ sessionId: string, deviceId: string, status: 'online' | 'offline' }>): void 681 682当不再进行对象上下线监听时,使用此接口删除对象的上下线监听。 683 684> **说明:** 685> 686> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用[off('status')](#offstatus9)替代。 687 688**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 689 690**参数:** 691 692 | 参数名 | 类型 | 必填 | 说明 | 693 | -------- | -------- | -------- | -------- | 694 | type | string | 是 | 事件类型,固定为'status',表示对象上下线。 | 695 | callback | Callback<{ sessionId: string, deviceId: string, status: 'online' \| 'offline' }> | 否 | 需要删除的上下线回调,若不设置则删除该对象所有的上下线回调。<br>sessionId:标识变更对象的sessionId; <br>deviceId:标识变更对象的deviceId; <br>status:标识对象为'online'(上线)或'offline'(下线)的状态。 | 696 697 698**示例:** 699 700```js 701import distributedObject from '@ohos.data.distributedDataObject'; 702let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); 703globalThis.statusCallback = (sessionId, networkId, status) => { 704 globalThis.response += "status changed " + sessionId + " " + status + " " + networkId; 705} 706// 删除上下线回调changeCallback 707g_object.off("status",globalThis.statusCallback); 708// 删除所有的上下线回调 709g_object.off("status"); 710``` 711