• Lv0
    粉丝0

积分0 / 贡献0

提问1答案被采纳0文章0

作者动态

    OpenHarmony 监听不到distributedObject对象的数据变化?

    applepai 显示全部楼层 发表于 3 天前

    【问题描述】

    1. 介绍问题现象和发生的背景 rk3568系统版本:OpenHarmony 5.0.2 api 版本:12 运行源码仓库sample:DistributedFilemanager 背景:添加了设备发现和组网的代码,当前可以通过PIN码进行设备间授信认证,然后通过sessionid加入组网

    2. 相关的代码(请勿使用截图) 从日志上看,两台设备都有 start joinSession 235016719,应该是加入了同一session,但是进行文件粘贴无法跨设备进行复制粘贴,update是有日志打印的,但是 change 没有日志打印,怀疑是没有监听到分布式数据对象的变化,请各位大佬看一下

      
        createDataObject(context: common.UIAbilityContext, sessionId?: string) {
          Logger.info(TAG, 'in createDataObject');
          if (this.distributedObject) {
            Logger.error(TAG, 'create dataObject already');
            return;
          }
      
          Logger.info(TAG, 'int distributedDataObject.create');
          // 创建分布式数据对象实例
          this.distributedObject = distributedDataObject.create(context, {
            from: '',
            localFileUriList: [],
            disFileUriList: [],
            disFileList: []
          });
      
          Logger.info(TAG, 'in this.distributedObject.on');
          // 设置数据变更监听
          this.distributedObject.on('change', (sessionId: string, fields: Array<string>) => {
            try{
              Logger.info(TAG, `change, sessionId: ${sessionId}, fields: ${JSON.stringify(fields)}`);
              fields.forEach((field) => {
                Logger.info(TAG, `${field}: ${this.distributedObject![field]}`);
              });
            } catch (error) {
              Logger.error(TAG, `Error in change event callback: ${error}`);
            }
          });
      
          // 设置同步sessionId加入组网
          if (sessionId) {
            this.sessionId = sessionId;
          }
          Logger.info(TAG, `the sessonid is ${this.sessionId}`);
          this.distributedObject.setSessionId(this.sessionId);
        }
      
        update(from: string, localFileUriList: string[], disFileUriList: string[], disFileList: string[]) {
          if(this.distributedObject) {
            Logger.info(TAG, 'this distributedObject is not null');
          }
          Logger.info(TAG, `doUpdate,${from},${localFileUriList},${disFileUriList},${disFileList}`)
          this.distributedObject!['from'] = from;
          this.distributedObject!['localFileUriList'] = localFileUriList;
          this.distributedObject!['disFileUriList'] = disFileUriList;
          this.distributedObject!['disFileList'] = disFileList;
        }
    3. 运行结果、错误截图

    4. 我尝试过的解决方法和结果

    5. 我想要达到的结果

    【运行环境】

    硬件:rk3568 ROM版本: DevEvoStudio版本:5.0.0 release SDK版本:

    您尚未登录,无法参与评论,登录后可以:
    参与开源共建问题交流
    认同或收藏高质量问答
    获取积分成为开源共建先驱

    精彩评论2

    applepai

    沙发 发表于 前天 15:28
    将设备以及sdk回退到4.1版本,功能是正常的,不知道5.0做了哪些修改

    kuaile

    板凳 发表于 昨天 09:32
    你好可以提供日志吗,信息无法判断问题点

    Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

    返回顶部