

分布式软总线技术架构

分布式软总线核心技术

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

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

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