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