什么是HarmonyOS“跨设备迁移”?
HarmonyOS“跨设备迁移”是指将承载业务的Page在同一用户的不同设备间迁移,以便支持用户业务无缝切换的诉求。“跨设备迁移”实现了业务跨设备流转功能,打破业务受限单设备的壁垒。
典型应用场景举例:
导航场景
如果用户驾车出行,上车前,在手机上规划好导航路线;上车后,导航自动迁移到车机和车载音箱;下车后,导航自动迁移回手机。如果用户骑车出行,在手机上规划好导航路线,骑行时手表可以接续导航。
办公场景
大屏上呈现的文档,PAD或者手机可以跨设备编辑。
娱乐场景
电影视频从客厅电视到房间PAD跨设备接续播放。
HarmonyOS“跨设备迁移”的技术原理
HarmonyOS“跨设备迁移”需要用到一项关键技术——“分布式任务调度”。
分布式任务调度
“跨设备迁移”依赖HarmonyOS系统中分布式任务调度的“业务迁移能力”。
“分布式任务调度”基于分布式软总线、分布式数据管理、分布式Profile和分布式安全认证这四项技术特性,构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持对跨设备的应用进行远程启动、远程调用、远程连接以及迁移等操作。
● 分布式软总线实现了近场设备间统一的分布式通信能力管理,提供不区分链路的设备发现、连接、组网和传输能力。开发者可无需关注设备间组网方式与底层协议,集中精力实现业务逻辑功能。
● 分布式数据管理中的数据同步能力可实现组网内的设备信息共享实时同步,如设备上下线、设备信息列表等,方便多设备信息实时同步。
● 分布式Profile实现多设备Profile的统一查询、订阅能力,拉通多设备之间的管理。
● 分布式安全认证提供应用完整性保护、应用权限管理、设备认证、密钥管理等服务,为业务提供安全保障基础。
分布式任务调度基于以上技术特性基座,构建统一的分布式服务管理机制,完成了分布式组网内设备中的系统服务信息同步及管理,包括服务注册、服务发现、服务同步和服务调度。
在业务发起“跨设备迁移”请求时,分布式调度系统根据调度决策机制选择目标设备,并获取对应设备的系统服务信息,在系统服务成功调度后,向目标设备发起远程启动、远程调用、远程连接和远程迁移,由对应设备的分布式任务调度系统完成本地化的任务执行。
HarmonyOS“跨设备迁移”的具体实现流程
HarmonyOS“跨设备迁移”依赖“Ability”实现,这里我们简单介绍一下“Ability”。Ability
Ability是应用所具备能力的抽象,HarmonyOS支持应用以Ability为单位进行部署。业务“跨设备迁移”的基础粒度也是Ability,具体实现是在不同设备间同一应用的同名Ability之间进行迁移。
● Ability概述
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-ability-overview-0000000000029852
HarmonyOS的应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成。
● FA有UI界面,提供与用户交互的能力
FA仅支持Page Ability,一个Page实例可以包含一组相关页面,每个页面用一个AbilitySlice实例表示。
● Page Ability基本概念
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-page-concept-0000000000033573● PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象
PA支持Service Ability和Data Ability:
Service Ability:用于提供后台运行任务的能力。
Data Ability:用于对外部提供统一的数据访问抽象。
Ability的生命周期主要用于Page实例的状态机管理,系统管理或用户操作等行为均会引起Page实例在其生命周期的不同状态之间进行转换。Ability Class提供的回调机制能够让Page及时感知外界变化,从而正确地应对状态变化。
● Page Ability生命周期
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-page-lifecycle-0000000000029840
“跨设备迁移”的处理依赖Ability的生命周期管理来完成Page的状态切换,同时Page在生命周期回调中处理数据的保存与恢复。
● onStart()
当系统首次创建Page实例时触发。应用须重写该方法,并在此初始化配置为展示AbilitySlice。Page在此后进入INACTIVE状态,用户不可交互。
● onActive()
当Page从INACTIVE状态切换到前台时触发。Page在此之后进入ACTIVE状态,该状态下,应用与用户处于可交互的状态。
● onInactive()
当Page即将进入不可交互状态时会被触发,Page在此之后进入INACTIVE状态,应用与用户不可交互。
● onBackground()
当Page不再对用户可见时触发。Page在此之后进入BACKGROUND状态。
● onForeground()
当Page从BACKGROUND状态重新回到前台时触发。Page在此之后回到INACTIVE状态。
● onStop()当系统将要销毁Page时触发。迁移流程围绕Ability的生命周期,我们来看看业务“跨设备迁移”的具体流程。
业务“跨设备迁移”的本质即通过分布式组网把一个设备的“Ability运行状态”迁移到另外一台设备上。
程序中“跨设备迁移”通过调用Page Ability的迁移接口ContinueAbility,将设备A的业务无缝迁移到指定设备B中。其中,支持迁移的Page以及此Page所包含的所有AbilitySlice必须实现IAbilityContinuation接口。具体接口代码如下:
public interface IAbilityContinuation { //是否可迁移 boolean onStartContinuation();
//保存数据 boolean onSaveData(IntentParams var1);
//恢复数据 boolean onRestoreData(IntentParams var1);
//迁移完成 void onCompleteContinuation(int var1);
default void onRemoteTerminated() { throw new RuntimeException(“Stub!”); }}
“跨设备迁移”关键步骤:
1设备A上的Page调用continueAbility请求迁移。2HarmonyOS处理迁移任务,并回调设备A上Page的保存数据方法onSaveData,用于保存迁移必须的Page数据。3HarmonyOS将Page数据从设备A迁移到设备B。4HarmonyOS在设备B上启动同一个Page,并回调onRestoreData恢复Page数据。
“跨设备迁移”数据流转过程:1设备A上的Page请求迁移到设备B(调用continueAbility)后,HarmonyOS回调设备A上该Page及其AbilitySlice栈中所有AbilitySlice实例的onStartContinuation()方法,以确认当前是否可以迁移。True代表可执行迁移。
2若可执行迁移,则HarmonyOS回调设备A上Page及其AbilitySlice栈中所有AbilitySlice实例的onSaveData()方法,由该Page保存必须传递到接收端设备B的Page状态数据。3若数据保存成功,则分布式调度系统通过RPC通信,在设备B上启动同一个Page,并恢复对应的AbilitySlice栈,然后回调设备B上该Page的onRestoreData()方法,传递此前保存的数据;
此后设备B上此Page从onStart()开始其生命周期回调。4HarmonyOS回调设备A上Page及其AbilitySlice栈中所有AbilitySlice实例的onCompleteContinuation()方法,通知设备A迁移结果即数据恢复成功与否。
了解完具体流程,下面我们给大家推荐一个HarmonyOS“跨设备迁移”动手实践的Demo。
HarmonyOS“跨设备迁移”动手实例
我们为大家带来一个办公场景下“基于分布式的协同邮件编辑”Demo,作为“跨设备迁移”应用的开发实例。该实例通过模拟不同设备间协同的邮件内容编辑来做一个“内容”跨设备迁移的演示。目前该Demo已在HarmonyOS官网Codelabs中上线,感兴趣的同学可以参考其具体流程,动手开发一个“跨设备迁移”邮箱Demo。
● 官网链接:
https://developer.huawei.com/consumer/cn/codelabsPortal/carddetails/Distributed-Mail
通过这一系列的解析,开发者们是不是对HarmonyOS“跨设备迁移”技术有了更深的了解,未来我们还将为大家带来更多HarmonyOS相关技术解读,也欢迎大家后台留言,告诉我们更多你想听的技术内容,我们将逐一为大家奉上~
编辑:jq
-
PA
+关注
关注
3文章
245浏览量
46798 -
HarmonyOS
+关注
关注
79文章
1966浏览量
29984
原文标题:HarmonyOS “跨设备迁移”原理解析
文章出处:【微信号:HarmonyOS_Dev,微信公众号:HarmonyOS开发者】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论