OpenHarmony学习笔记-提升篇

HarmonyOS流转架构解析

CH8-HarmonyOS流转架构解析_功能流转设计-CSDN博客

核心概念
跨端迁移:一种实现用户应用程序流转的技术方案,指在A端运行的FA迁移到B端上,完成迁移后, B端FA继续任务,而A端应用退出。多设备的应用组件之间迁移数据/状态后
多端协同:一种实现用户应用程序流转的技术方案,指多端上的不同FA/PA同时运行、或者交替运行实现完整的业务;或者,多端上的相同FA/PA同时运行实现完整的业务。多个设备作为一个整体为用户提供比单设备更加高效、沉浸的体验。组件间通信的RPC调用能力


跨端迁移关键流程

  1. 流转准备:设备A上的应用向流转任务管理服务注册一个流转回调;
  2. 流转开始:设备A上的应用通过调用分布式任务调度的能力,实现应用迁移:
  3. 系统回调设备A上FA的onStartContinuation()方法,以确认当前FA是否可以开始迁移,onStartContinuation方法返回true,表示当前FA可以开始迁移;
  4. 如果可以开始迁移,则系统回调设备A上FA的onSaveData()方法,以便保存迁移后恢复状态必须的据,数据保存在函数的savedData参数中;
  5. 如果保存数据成功,则系统在设备B上启动同一个FA,然后回调onRestoreData()方法,传递设备A上FA保存的数据,应用可在此方法恢复业务状态;此后设备B上此FA从onInit()开始其生命周期回调;
  6. 系统回调设备A上FA的onCompleteContinuation()方法,通知应用迁移成功。迁移操作完成,参数code返回结果。

多端协同关键流程

  1. 流转进行:设备A上的应用通过调用分布式任务调度的能力,如startAbility,connectAbility等,向设备B的应用发起多端协同。
  2. 协同开始

设备A调用startAbility启动设备B的FA和PA;
设备A调用connectAbility连接设备B的PA:
在设备A上通过本地应用提供的连接按钮,连接设备B上指定的PA。
连接后,通过其他功能相关按钮实现控制对端PA的能力。通过连接关系,开发者可以实现跨设备的同步服务调度,实现如大型计算任务互助等价值场景。

  1. 协同结束

设备A调用disconnectAbility断开与设备B的PA的连接:将之前已连接的PA断开连接;
设备A调用stopAbility关闭设备B的PA:关闭设备B上指定的PA
 

约束与限制

开发者需要在Intent中设置支持分布式的标记(例如:Intent.FLAG_ABILITYSLICE_MULTI_DEVICE表示该应用支持分布式调度),否则将无法获得分布式能力。

开发者通过在config.json中的reqPermissions字段里添加多设备协同访问的权限申请:三方应用使用{“name”: “ohos.permission.DISTRIBUTED_DATASYNC”}。
————————————————

                            版权声明:本文为转载博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/weixin_46227276/article/details/122690988

分布式软总线

鸿蒙实战开发:【分布式软总线组件】_分布式架构软总线-CSDN博客

分布式软总线实现近场设备间统一的分布式通信管理能力,提供不区分链路的设备间发现连接、组网和传输能力,主要功能如下:

发现连接:提供基于Wifi、蓝牙等通信方式的设备发现连接能力。
设备组网:提供统一的设备组网和拓扑管理能力,为数据传输提供已组网设备信息。
数据传输:提供数据传输通道,支持消息、字节、流、文件的数据传输能力。

1、发现流程

  1. 上层应用需要发现特定能力设备时,调用发现接口启动发现。
  2. 当软总线发现到设备时,通过回调接口通知业务所发现的设备信息。
  3. 上层应用不再需要发现时,调用StopRefreshLNN接口停止设备发现。

2、组网

  1. 发起组网请求,携带组网连接地址信息,并且提供组网执行结果回调函数。

  2. 等待组网结果,JoinLNN()返回成功表示软总线接受了组网请求,组网结果通过回调函数通知业务;组网回调函数中addr参数内容和JoinLNN()的入参互相匹配;retCode如果为0,表示组网成功,此时networkId为有效值,后续传输、退网等接口均需使用该参数;retCode如果不为0,表示组网失败,此时networkId为无效值。

  3. 使用传输相关接口进行数据传输。

  4. 发送退网请求,携带组网成功后返回的networkId,并且提供退网执行结果回调。

  5. 等待退网完成,OnLeaveLNNResult()的networkId和退网请求接口中的networkId互相匹配;retCode为0表示退网成功,否则退网失败。退网成功后,networkId变为无效值,后续不应该被继续使用。

  6. 使用节点(即设备)注册和注销接口,监听网络中节点状态变化等事件。

3、传输

  1. 创建Socket。
  2. 服务端启动监听,客户端进行绑定。
  3. 通过Socket向对端设备发送数据。
  4. 关闭Socket。

————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/2301_76813281/article/details/136746118

https://docs.qq.com/doc/DSEdlR0NRaWJzVFVB

鸿蒙开发面试大合集篇(共计319页)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值