OpenHarmony开发者论坛

标题: Openharmony 5.1版本进行分布式数据对象同步时,无法数据同步 [打印本页]

作者: ikun    时间: 2026-4-17 11:05
标题: Openharmony 5.1版本进行分布式数据对象同步时,无法数据同步
[md]# 设备型号:3588

# 鸿蒙版本:5.1.1

# API :18

代码

```
// 分布式数据对象模块
import { distributedDataObject } from '@kit.ArkData';
// 分布式数据对象的属性实体类
import DistributedSensorDevice from '../model/DistributedSensorDevice'
// 分布式数据对象建立同步的sessionId
import { SESSION_ID } from './CommonConstants'
import { common } from '@kit.AbilityKit';
import { ErrorEvent } from '@kit.ArkTS';

export default class DistributedObjectUtil {
  // 单例模式
  private static distributedObjectModelistributedObjectUtil = new DistributedObjectUtil()
  private constructor() {
  }
  public static newInstance() {
    return DistributedObjectUtil.distributedObjectModel
  }

  @Track public  localObject: distributedDataObject.DataObject|null = null
  // 创建分布式数据对象
  createDistributedDataObject(context:common.UIAbilityContext, sourceistributedSensorDevice, callbackresult:string)=> void) {
    try {
      // 创建分布式数据对象
      this.localObject = distributedDataObject.create(context, source);
      console.log(`createDistributedDataObject success`)
      // 将成功的消息传递给callback
      callback(`createDistributedDataObject success`)
      // 设置sessionId
      this.localObject.setSessionId(SESSION_ID,()=>{
        console.error(`setSessionId sucess`)
      });//distributedDataObject.genSessionId()
    }catch(error) {
      let e = error as ErrorEvent
      console.error(`createDistributedDataObject err{JSON.stringify(e)}`)
      callback(`createDistributedDataObject err{JSON.stringify(e)}`)
    }
  }

  // 添加分布式数据对象数据改变的监听
  addDistributedDataObjectListener(callbacksessionId: string,fields: Array<string>)=>void) {
    if(this.localObject == null) {
      console.error(`addDistributedDataObjectListener localObject is null`)
      return
    }
    console.error(`DistributedObjectUtil change `)
    this.localObject.on("change", callback)// 绑定数据改变的监听
    // this.localObject.on("change", (sessionId: string, fields: Array<string>) => {
    //   console.error(`change callback `,sessionId,"fields =",fields)
    // })// 绑定数据改变的监听

  }

  // 添加设备在线/离线状态改变的监听
  addDistributedDataObjectStatusListener(callbacksessionId: string,
                                                   networkId: string,
                                                   status: "online" | "offline")=>void) {
    if(this.localObject == null) {
      console.error(`addDistributedDataObjectListener localObject is null`)
      return
    }
    console.error(`DistributedObjectUtil status `)
    // 绑定设备状态改变的监听
    this.localObject.on("status",callback)
    //   this.localObject.on("status", (sessionId: string, networkId: string, status: "online" | "offline") => {
    //   console.error(` status `,status,"  sessionId ="+sessionId)
    // })
  }

  // 删除监听
  closeDistributedDataObjectListener() {
    if(this.localObject == null) {
      console.error(`addDistributedDataObjectListener localObject is null`)
      return
    }
    console.error(`DistributedObjectUtil close `)
    this.localObject?.off('change');
    this.localObject?.off('status');
  }
}

```


代码可以进行创建,设置session,但是数据上下线以及数据改变的的监听回调,都没有执行。

并且日志里数据对象都有在创建,

两台设备蓝牙已开启,处于同一个网络,可以进行组网认证。

当开启数据监听回调的时候,日志显示如下

```
01-01 08:35:00.938   5614-5614     C057c2/IPCObjectProxy           com.examp...tributed  E     SendRequest 181: failed, handle:0 error:7 desc:*.accessToken proxy:3101202800 time:2099248332528
01-01 08:35:00.938   5614-5614     C04170/DSched_Service           com.examp...tributed  E     DmsSaClient::GetDSchedEventInfo Get SA manager proxy fail.
01-01 08:35:00.938   5614-5614     C04170/DSched_Service           com.examp...tributed  E     DmsHandle::GetDSchedEventInfo DmsSaClient GetDSchedEventInfo fail, ret 2097167.
01-01 08:35:00.938   5614-5614     C01652/ObjectStore-x            com.examp...tributed  E     157: GetDeviceList Get collaboration events failed, error code = 29360174
01-01 08:35:00.938   5614-5614     C01630/DistributedDB            com.examp...tributed  I     [NAdapt][SearchOnline] onlineDev count = 0.

01-01 08:43:40.226   5614-5614     C01630/DistributedDB            com.examp...tributed  I     [Syncer] LocalDataChanged no online standard devices, Label=93B5B6
```

在4.2版本API10的版本下是正常运行的。设备更新升级到5.1,api升级至18的时候,就出现此问题,各位大佬,帮帮忙,是哪里更新了,还是其他问题?

感谢~~~~
[/md]




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5