OpenHarmony开发者论坛

标题: OpenHarmony 监听不到distributedObject对象的数据变化? [打印本页]

作者: applepai    时间: 2024-11-20 11:18
标题: OpenHarmony 监听不到distributedObject对象的数据变化?
[md]### 【问题描述】

1. 介绍问题现象和发生的背景
   rk3568系统版本:OpenHarmony 5.0.2
   api 版本:12
   运行源码仓库sample:[DistributedFilemanager](https://gitee.com/openharmony/ap ... tributedFilemanager "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版本:
[/md]
作者: applepai    时间: 2024-11-21 15:28
将设备以及sdk回退到4.1版本,功能是正常的,不知道5.0做了哪些修改
作者: kuaile    时间: 2024-11-22 09:32
你好可以提供日志吗,信息无法判断问题点




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