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