HarmonyOS 鸿蒙Next【HarmonyOS工具链】HarmonyOS“跨设备迁移”原理解析
HarmonyOS 鸿蒙Next【HarmonyOS工具链】HarmonyOS“跨设备迁移”原理解析 作者:zhenyu,华为软件开发工程师
什么是HarmonyOS“跨设备迁移”?
HarmonyOS“跨设备迁移”是指将承载业务的Page在同一用户的不同设备间迁移,以便支持用户业务无缝切换的诉求。“跨设备迁移”实现了业务跨设备流转功能,打破业务受限单设备的壁垒。
典型应用场景举例:
-
导航场景
如果用户驾车出行,上车前,在手机上规划好导航路线;上车后,导航自动迁移到车机和车载音箱;下车后,导航自动迁移回手机。如果用户骑车出行,在手机上规划好导航路线,骑行时手表可以接续导航。
-
办公场景
大屏上呈现的文档,PAD或者手机可以跨设备编辑。
-
娱乐场景
电影视频从客厅电视到房间PAD跨设备接续播放。
HarmonyOS“跨设备迁移”的技术原理
HarmonyOS“跨设备迁移”需要用到一项关键技术——“分布式任务调度”。
分布式任务调度
“跨设备迁移”依赖HarmonyOS系统中分布式任务调度的“业务迁移能力”。
“分布式任务调度”基于分布式软总线、分布式数据管理、分布式Profile和分布式安全认证这四项技术特性,构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持对跨设备的应用进行远程启动、远程调用、远程连接以及迁移等操作。
HarmonyOS“跨设备迁移”的具体实现流程
HarmonyOS“跨设备迁移”依赖“Ability”实现,这里我们简单介绍一下“Ability”。
Ability
Ability是应用所具备能力的抽象,HarmonyOS支持应用以Ability为单位进行部署。业务“跨设备迁移”的基础粒度也是Ability,具体实现是在不同设备间同一应用的同名Ability之间进行迁移。
“跨设备迁移”关键步骤:
- 设备A上的Page调用continueAbility请求迁移。
- HarmonyOS处理迁移任务,并回调设备A上Page的保存数据方法onSaveData,用于保存迁移必须的Page数据。
- HarmonyOS将Page数据从设备A迁移到设备B。
- HarmonyOS在设备B上启动同一个Page,并回调onRestoreData恢复Page数据。
“跨设备迁移”数据流转过程:
- 设备A上的Page请求迁移到设备B(调用continueAbility)后,HarmonyOS回调设备A上该Page及其AbilitySlice栈中所有AbilitySlice实例的onStartContinuation()方法,以确认当前是否可以迁移。True代表可执行迁移。
- 若可执行迁移,则HarmonyOS回调设备A上Page及其AbilitySlice栈中所有AbilitySlice实例的onSaveData()方法,由该Page保存必须传递到接收端设备B的Page状态数据。
- 若数据保存成功,则分布式调度系统通过RPC通信,在设备B上启动同一个Page,并恢复对应的AbilitySlice栈,然后回调设备B上该Page的onRestoreData()方法,传递此前保存的数据;此后设备B上此Page从onStart()开始其生命周期回调。
- HarmonyOS回调设备A上Page及其AbilitySlice栈中所有AbilitySlice实例的onCompleteContinuation()方法,通知设备A迁移结果即数据恢复成功与否。
HarmonyOS“跨设备迁移”动手实例
我们为大家带来一个办公场景下“基于分布式的协同邮件编辑”Demo,作为“跨设备迁移”应用的开发实例。该实例通过模拟不同设备间协同的邮件内容编辑来做一个“内容”跨设备迁移的演示。
目前该Demo已在HarmonyOS官网Codelabs中上线,感兴趣的同学可以参考其具体流程,动手开发一个“跨设备迁移”邮箱Demo。
通过这一系列的解析,开发者们是不是对HarmonyOS“跨设备迁移”技术有了更深的了解,未来我们还将为大家带来更多HarmonyOS相关技术解读,也欢迎大家评论区留言,告诉我们更多你想听的技术内容,我们将逐一为大家奉上~
更多关于HarmonyOS 鸿蒙Next【HarmonyOS工具链】HarmonyOS“跨设备迁移”原理解析的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
老师您好,有个问题想请教您,多端协同需要登录同一个华为账号吗?
需求场景:我们这边有一个市场营销软件,简称为移动作业平台,目前是在Pad上,可以进行A/B面切换,A面主要由客户经理操作,B面主要面向客户,客户在B面进行相关操作。
基于鸿蒙系统万物互联的思想,提出如下设想:在作业平台Pad端和客户手机是鸿蒙系统的前提下,通过作业平台Pad启动B面时,将其B面投屏或者同步到客户手机上,由客户自行操作,并将结果或数据同步回作业平台Pad,方便快捷的完成相关操作。
现有以下困惑:
- 这样的操作是否能实现?
- 通过哪种方式进行,跨设备转移还是多端协同?
- 查阅文档,跨设备转移需要满足同一网络、登录同一华为账号等要求,那么作业平台Pad和客户手机是否需要登录同一个华为账号?
- 客户手机是否需要提前安装同样的移动作业平台 APP?
还望老师答疑解惑,非常感谢!
更多关于HarmonyOS 鸿蒙Next【HarmonyOS工具链】HarmonyOS“跨设备迁移”原理解析的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html