• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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&lt;void&gt;): void
145
146设置sessionId,使用callback方式异步回调。当可信组网中有多个设备时,多个设备间的对象如果设置为同一个sessionId,就能自动同步。
147
148**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC149
150**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject
151
152**参数:**
153
154  | 参数名 | 类型 | 必填 | 说明 |
155  | -------- | -------- | -------- | -------- |
156  | sessionId | string | 是 | 分布式数据对象在可信组网中的标识ID。设置为""时表示退出分布式组网。|
157  | callback | AsyncCallback&lt;void&gt; | 是 | 加入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&lt;void&gt;): void
183
184退出所有已加入的session,使用callback方式异步回调。
185
186**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC187
188**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject
189
190**参数:**
191
192  | 参数名 | 类型 | 必填 | 说明 |
193  | -------- | -------- | -------- | -------- |
194  | callback | AsyncCallback&lt;void&gt; | 是 | 退出所有已加入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&lt;void&gt;
220
221设置sessionId,使用Promise异步返回。当可信组网中有多个设备时,多个设备间的对象如果设置为同一个sessionId,就能自动同步。
222
223**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC224
225**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject
226
227**参数:**
228
229  | 参数名 | 类型 | 必填 | 说明 |
230  | -------- | -------- | -------- | -------- |
231  | sessionId | string | 否 | 分布式数据对象在可信组网中的标识ID。如果要退出分布式组网,设置为""或不设置均可。 |
232
233**返回值:**
234
235| 类型 | 说明 |
236| -------- | -------- |
237| Promise&lt;void&gt; | 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&lt;string&gt;) => 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&lt;string&gt;) => 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&lt;SaveSuccessResponse&gt;): 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&lt;[SaveSuccessResponse](#savesuccessresponse9)&gt; | 是 | 回调函数。返回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&lt;SaveSuccessResponse&gt;
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&lt;[SaveSuccessResponse](#savesuccessresponse9)&gt; | 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&lt;RevokeSaveSuccessResponse&gt;): void
460
461撤回保存的分布式数据对象。使用callback方式作为异步方法。
462
463如果对象保存在本地设备,那么将删除所有受信任设备上所保存的数据。
464如果对象保存在其他设备,那么将删除本地设备上的数据。
465
466**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject
467
468**参数:**
469
470  | 参数名 | 类型 | 必填 | 说明 |
471  | -------- | -------- | -------- | -------- |
472  | callback | AsyncCallback&lt;[RevokeSaveSuccessResponse](#revokesavesuccessresponse9)&gt; | 是 | 回调函数。返回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&lt;RevokeSaveSuccessResponse&gt;
505
506撤回保存的分布式数据对象。使用Promise方式作为异步方法。
507
508如果对象保存在本地设备,那么将删除所有受信任设备上所保存的数据。
509如果对象保存在其他设备,那么将删除本地设备上的数据。
510
511**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject
512
513**返回值:**
514
515  | 类型 | 说明 |
516  | -------- | -------- |
517  | Promise&lt;[RevokeSaveSuccessResponse](#revokesavesuccessresponse9)&gt; | 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_DATASYNC603
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&lt;string&gt;) => 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&lt;string&gt;) => 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```