• 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("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&lt;void&gt;): void
145
146设置同步的sessionId,当可信组网中有多个设备时,多个设备间的对象如果设置为同一个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```
175
176### setSessionId<sup>9+</sup>
177
178setSessionId(callback: AsyncCallback&lt;void&gt;): void
179
180退出所有已加入的session。
181
182**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC183
184**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject
185
186**参数:**
187
188  | 参数名 | 类型 | 必填 | 说明 |
189  | -------- | -------- | -------- | -------- |
190  | callback | AsyncCallback&lt;void&gt; | 是 | 退出所有已加入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&lt;void&gt;
216
217设置同步的sessionId,当可信组网中有多个设备时,多个设备间的对象如果设置为同一个sessionId,就能自动同步。
218
219**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC220
221**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject
222
223**参数:**
224
225  | 参数名 | 类型 | 必填 | 说明 |
226  | -------- | -------- | -------- | -------- |
227  | sessionId | string | 否 | 分布式数据对象在可信组网中的标识ID。如果要退出分布式组网,设置为""或不设置均可。 |
228
229**返回值:**
230
231| 类型 | 说明 |
232| -------- | -------- |
233| Promise&lt;void&gt; | 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&lt;string&gt;) => 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&lt;string&gt;) => 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&lt;SaveSuccessResponse&gt;): 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&lt;[SaveSuccessResponse](#savesuccessresponse9)&gt; | 是 | 回调函数。返回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&lt;SaveSuccessResponse&gt;
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&lt;[SaveSuccessResponse](#savesuccessresponse9)&gt; | 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&lt;RevokeSaveSuccessResponse&gt;): void
456
457撤回保存的分布式数据对象。使用callback方式作为异步方法。
458
459如果对象保存在本地设备,那么将删除所有受信任设备上所保存的数据。
460如果对象保存在其他设备,那么将删除本地设备上的数据。
461
462**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject
463
464**参数:**
465
466  | 参数名 | 类型 | 必填 | 说明 |
467  | -------- | -------- | -------- | -------- |
468  | callback | AsyncCallback&lt;[RevokeSaveSuccessResponse](#revokesavesuccessresponse9)&gt; | 是 | 回调函数。返回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&lt;RevokeSaveSuccessResponse&gt;
501
502撤回保存的分布式数据对象。使用Promise方式作为异步方法。
503
504如果对象保存在本地设备,那么将删除所有受信任设备上所保存的数据。
505如果对象保存在其他设备,那么将删除本地设备上的数据。
506
507**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject
508
509**返回值:**
510
511  | 类型 | 说明 |
512  | -------- | -------- |
513  | Promise&lt;[RevokeSaveSuccessResponse](#revokesavesuccessresponse9)&gt; | 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_DATASYNC599
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&lt;string&gt;) => 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&lt;string&gt;) => 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```