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