01

分布式任务调度概述

在 HarmonyOS 中,分布式任务调度平台对搭载 HarmonyOS 的多设备构筑的“超级虚拟终端”提供统一的组件管理能力,为应用定义统一的能力基线、接口形式、数据结构、服务描述语言,屏蔽硬件差异;支持远程启动、远程调用、业务无缝迁移等分布式任务。

02

实现调度的约束与限制

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

开发者通过在 config.json 中的 reqPermissions 字段里添加权限申请,以获取跨设备连接的能力和分布式数据传输的权限:

分布式数据传输的权限:

三方应用使用权限:

系统应用使用权限:

另外还有三个获取分布式设备信息需要的权限:

注意:还需要在开发的时候,要在 Ability 里主动声明,要用到的权限。

FA(Feature Ability,Page 模板的 Ability)的调用支持启动和迁移行为,在进行调度时:

当启动 FA 时,需要开发者在 Intent 中指定对端设备的 deviceId、bundleName 和 abilityName。

FA 的迁移实现相同 bundleName 和 abilityName 的 FA 跨设备迁移,因此需要指定迁移设备的 deviceId。

03

实现场景介绍

下面以设备 A(本地设备)和设备 B(远端设备)为例,介绍下面我们要实现的场景:

设备 A 启动设备 B 的 FA:在设备 A 上通过本地应用提供的启动按钮,启动设备 B 上对应的 FA。

设备 A 的 FA 迁移至设备 B:设备 A 上通过本地应用提供的迁移按钮,将设备 A 的业务无缝迁移到设备 B 中。

设备 A 的 FA 迁移至设备 B,还可以实现主动撤回迁移。

04

具体实现前先了解要用的接口

启动远程 FA

startAbility(Intent intent)接口提供启动指定设备上 FA 和 PA 的能力,Intent 中指定待启动 FA 的设备 deviceId、bundleName 和 abilityName。

迁移 FA

continueAbility(String deviceId)接口提供将本地 FA 迁移到指定设备上的能力。

continueAbilityReversibly(String deviceId)接口提供将本地 FA 迁移到指定设备上的能力,这种迁移可撤回,reverseContinueAbility() 接口提供撤回迁移的能力。

05

实战远程启动 FA 页面

编程实现上面场景的界面

ability_main.xml:

button_bg.xml:

MigrationAbility 和 MigrationBackAbility:

ability_migration.xml:

ability_migration_back.xml 比 ability_migration.xml 多一个迁回按钮,另外主页上点击按钮跳转等,略...

使用分布式能力要求开发者在 Ability 对应的 config.json 中声明多设备协同访问的权限:

三方应用部署权限、分布式数据传输的权限、系统应用使用权限的申请:

声明分布式获取设备列表及设备信息的权限,如下所示:

对于三方应用还要求在实现 Ability 的代码中显式声明需要使用的权限。

为启动远程 FA 的按钮添加点击事件,获取设备信息,实现启动远程 FA 的能力。

06

实现业务在设备间无缝迁移

实战将设备 A 运行时的 FA 迁移到设备 B,实现业务在设备间无缝迁移。

MigrationAbility:

MigrationAbilitySlice:

此外,不同于启动行为,FA 的迁移还涉及到状态数据的传递。为此,继承的 IAbilityContinuation 接口为开发者提供迁移过程中特定事件的管理能力。通过自定义迁移事件相关的行为,最终实现对 Ability 的迁移。

主要以较为常用的两个事件,包括迁移发起端完成迁移的回调 onCompleteContinuation(int result) 以及接收到远端迁移行为传递数据的回调 onRestoreData(IntentParams restoreData)。

其他还包括迁移到远端设备的 FA 关闭的回调 onRemoteTerminated()、用于本地迁移发起时保存状态数据的回调 onSaveData(IntentParams saveData)和本地发起迁移的回调 onStartContinuation()。

07

请求回迁

设备 A 上的 Page 请求回迁。

系统回调设备 B 上 Page 及其 AbilitySlice 栈中所有 AbilitySlice 实例的 IAbilityContinuation.onStartContinuation() 方法,以确认当前是否可以立即迁移。

如果可以立即迁移,则系统回调设备 B 上 Page 及其 AbilitySlice 栈中所有 AbilitySlice 实例的 IAbilityContinuation.onSaveData() 方法,以便保存回迁后恢复状态必须的数据。

如果保存数据成功,则系统在设备 A 上 Page 恢复 AbilitySlice 栈,然后回调 IAbilityContinuation.onRestoreData() 方法,传递此前保存的数据。

如果数据恢复成功,则系统终止设备 B 上 Page 的生命周期。

专注开源技术,共建鸿蒙生态

鸿蒙os多设备如何实现,鸿蒙OS中如何实现跨设备迁移?相关推荐

  1. 设备管理系统在智能制造中的重要作用

    对于制造企业来说,完成智能制造升级改造能够获得巨大的竞争力提升,这时通过设备管理系统对设备进行信息化的.全生命周期的管理就显得尤为重要. 但是很多企业在设备管理方面还不够重视,任然处于设备可以凑活用. ...

  2. 鸿蒙唯独没有手机,想用鸿蒙OS,却没有华为手机?华为高层:还有1亿台设备可体验...

    不再是PTT系统!鸿蒙OS真的要来了,年内初步实现全场景交互 从2019年开始,有关 鸿蒙OS 的消息越来越多,不仅公布了发展规划,也确定将适配多款机型,期待度直接拉满.可惜以目前的情况来看,鸿蒙OS ...

  3. 荣耀es升级鸿蒙,华为手机明年全部升级鸿蒙系统 所有自研设备换OS

    近日,华为举行 HarmonyOS 2.0 手机开发者 Beta 活动,现场正式发布了 HarmonyOS 2.0 手机开发者 Beta 版本. 华为消费者业务软件部副总裁杨海松在接受媒体采访表示,到 ...

  4. 易语言可以写鸿蒙系统,华为王成录:鸿蒙 OS 系统是不同设备的统一语言

    IT 之家 4 月 7 日消息 华为消费者业务软件部总裁.AI 与智慧全场景业务部部长王成录受邀在近日举办的 " 压力下前行 "TEDxHouHai 大会上发表了 " 联 ...

  5. 鸿蒙os电视是安卓,适配鸿蒙OS系统的机型又增加了!和安卓系统相比鸿蒙有哪些特点?...

    自从鸿蒙OS系统全面启动公测以来,不断的在更新更多适配机型,就在前不久华为鸿蒙官网又新增了不少的机型,除了之前的Mate系列和P系列外,这次更新的机型有:华为nova6.nova65G.nova75G ...

  6. bash 判断 os 版本_专家:鸿蒙OS初登手机令人惊艳,但全面商用至少还要2年

    鸿蒙 OS 迈入成熟,第一部正式搭载的手机是华为 P50? 华为手机销量持续下滑,鸿蒙现在登陆手机是个坏消息吗? 专家:鸿蒙 OS 初登手机令人惊艳,但全面商用至少还要 2 年 即使鸿蒙(Harmon ...

  7. 鸿蒙上海开发者日直播,华为鸿蒙 OS 开发者日于 4月17 日上海举行

    IT之家 4 月 14 日消息 据华为官方发布,HarmonyOS 开发者日将在 4 月 17 日于上海举行.HarmonyOS 开发者日即将为大家呈现一场技术硬核.有趣好玩的开发者盛宴!这里有 Ha ...

  8. 华为鸿蒙系统如何申请尝鲜,鸿蒙OS 2.0公测尝鲜来咯

    首先说一下6月2号鸿蒙OS将正式发布! 其次根据鸿蒙技术社区消息,鸿蒙 OS 首批用户尝鲜计划开启咯,Beta 尝鲜最低支持Mate20 系列手机,mate20系列之后的华为 Mate/novaico ...

  9. 鸿蒙系统有无隐私空间,华为鸿蒙OS系统有隐私空间功能吗 华为p40使用鸿蒙系统体验评测...

    小米手机的黑科技那是真的多到不可想象,其中比较神奇的就是这款手机鸿蒙系统有没有隐私空间呢?接下来小编就来带大家一起了解鸿蒙系统怎么样吧. 鸿蒙系统有没有隐私空间 根据最新消息华为鸿蒙系统还是有隐私空间 ...

最新文章

  1. Android .classpath文件的作用
  2. Scala IDE for Eclipse的下载、安装和WordCount的初步使用(本地模式和集群模式)
  3. 怎样成为一名更优秀的程序员?我总结出 7 条建议,希望对你们有帮助!
  4. win7分区c盘调整容量_C盘空间不足变红咋办?清理垃圾瘦身不如扩容,硬盘容量调整教程...
  5. 速修复!NSA 报告四个严重和高危 Exchange Server RCE 漏洞
  6. linux显示防火墙端口命令,Linux查询端口是否被防火墙屏蔽 firewall-cmd命令用法
  7. caffe中的layers
  8. 高内聚低耦合_拉锥耦合器最强粘接方案
  9. 18个最受欢迎的低代码开发平台【开源】
  10. 云计算实战应用案例精讲-【深度学习】多模态融合(论文篇七)
  11. [置顶] 【游戏产业的5年之变】
  12. eclipse上插入中文到mysql,但是navicat显示问号《网上很多方法都没用》,最终google到了精品
  13. execution使用
  14. python:calendar 日历相关库
  15. HTMLCSS超文本标记语言编程
  16. ZYNQ7010教程(一)PL部分
  17. 可在线查看并附源码下载!基于SSM(spring springMVC mybatis mysql)框架的hrm人事管理系统
  18. 使用Unity开发RPG游戏完整指南
  19. Linux命令万字总结,带你实现基础Linux命令自由
  20. 低学历计算机方向的就业前景,未来五年,发展前景很好的三大专业,适合低学历学生逆袭...

热门文章

  1. iOS视频开发(二):视频H264硬编码
  2. 分享一个吐血三升的GNS3 ASAv9.X直连ping不通的原因
  3. 抖音返利CPS系统APP平台开发
  4. php msvcr110,安装PHP时计算机错误丢失了msvcr110.dll
  5. 量化投资之工具篇一:Backtrader从入门到精通(3)-Cerebro源代码解读
  6. Linux下conda环境配置及第三方库安装
  7. 强烈推荐,一步一步学装电脑(有图)
  8. 仓库管理系统怎么选?想高效管理仓库的老板,别错过这篇干货!
  9. 未来虚拟经济的雏形,SecondLife,全新的概念。。。
  10. 2020 9 17POJ青蛙约会