HarmonyOS - 自由流转


分布式软总线技术架构

分布式软总线核心技术

分布式数据管理:解决跨端数据共享问题

分布式数据管理:分布式数据库和分布式数据对象

image.png

分布式硬件:解决跨端硬件共享问题

分布式任务调度:提供应用跨端迁移、多端协同能力

系统抽象和交互逻辑

分布式的应用开发框架

跨端迁移运作机制

开发步骤

1.为应用配置基础迁移功能

2.应用动态运行时申请用户授权

async checkPermissions(): Promise<void> {
    const permissions: Array<Permissions> = ["ohos.permission.DISTRIBUTED_DATASYNC"];
    const accessManager = abilityAccessCtrl.createAtManager();
    try {
      const bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION;
      const bundleInfo = await bundleManager.getBundleInfoForSelf(bundleFlags);
      const tokenId = bundleInfo.appInfo.accessTokenId;
      //获取授权状态
      const grantStatus = await accessManager.checkAccessToken(tokenId, permissions[0]);
      // 未获得授权,需要向用户申请权限
      if (grantStatus === abilityAccessCtrl.GrantStatus.PERMISSION_DENIED) {
        accessManager.requestPermissionsFromUser(this.context, permissions);
      }
    } catch (err) {
      Logger.error('EntryAbility', 'checkPermissions', `Catch err: ${err}`);
      return;
    }
  }

3.实现接口

onContinue中保存数据,onCreate/onNewWant中恢复数据

源端:实现源端回调

onContinue(wantParam: Record<string, Object | undefined>): AbilityConstant.OnContinueResult {
    ……
    return AbilityConstant.OnContinueResult.AGREE; //返回同意迁移
  }

对端:实现对端回调

onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
  this.checkPermissions();
  if (launchParam.launchReason === AbilityConstant.LaunchReason.CONTINUATION) {//判断是否迁移
    this.context.restoreWindowStage(new LocalStorage()); //触发页面恢复
  }

分布式数据传输

使用组件迁移数据

页面栈迁移

少量状态数据迁移

通过 want参数传输,建议数据量小于 100KB


内存数据迁移

1.创建分布式数据对象
2.向分布式数据对象写
3.从分布式数据对象读

使用分布式文件传输数据 > 100M适用

1.向分布式文件写
2.从分布式文件读

写读最后都需要 closeSync

典型场景

  • 媒体播控:使用媒体播控,可以简单高效地将音频投放到其他HarmonyOS设备上播放,如在手机上播放的音频,可以投到2in1设备上继续播放。
  • 应用接续:指当用户在一个设备上操作某个应用时,可以在另一个设备的同一个应用中快速切换,并无缝衔接上一个设备的应用体验。
  • 跨设备拖拽:跨端拖拽提供跨设备的键鼠共享能力,支持在平板或2in1类型的任意两台设备之间拖拽文件、文本。
  • 跨设备剪贴板:当用户拥有多台设备时,可以通过跨设备剪贴板的功能,在A设备的应用上复制一段文本,粘贴到B设备的应用中,高效地完成多设备间的内容共享。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。