0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是HarmonyOS“跨设备迁移”?

HarmonyOS开发者 来源:HarmonyOS开发者 作者:zhenyu 2021-06-25 17:32 次阅读

什么是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
    PA
    +关注

    关注

    3

    文章

    245

    浏览量

    46895
  • HarmonyOS
    +关注

    关注

    79

    文章

    1977

    浏览量

    30264

原文标题:HarmonyOS “跨设备迁移”原理解析

文章出处:【微信号:HarmonyOS_Dev,微信公众号:HarmonyOS开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AKI语言调用库神助攻C/C++代码迁移HarmonyOS NEXT

    /C++代码快速迁移HarmonyOS NEXT。凭借卓越的兼容性,AKI已成为厂商与开发者打造鸿蒙原生应用过程中广泛使用的语言调用解决方案。 AKI是一款专为鸿蒙原生开发设计的FFI(外部函数接口
    发表于 01-02 17:08

    HarmonyOS Next 应用元服务开发-应用接续动态配置迁移快速启动目标应用

    快速启动目标应用,默认情况下,发起迁移后不会立即拉起对端的目标应用,而是等待迁移数据从源端传输到对端后才会拉起应用。若应用希望在用户发起接续后立即被拉起,减少等待时间,提升体验,可以在
    发表于 12-31 09:58

    HarmonyOS Next 应用元服务开发-应用接续动态配置迁移保持迁移连续性

    保证迁移连续性,由于迁移加载时,目标端拉起的应用可能执行过自己的迁移状态设置命令(如:冷启动时目标端在onCreate中设置了INACTIVE;热启动时对端已打开了不可迁移的页面,
    发表于 12-30 10:30

    HarmonyOS Next 应用元服务开发-应用接续动态配置迁移按需退出

    按需退出,支持应用动态选择迁移成功后是否退出迁移源端应用(默认迁移成功后退出迁移源端应用)。如果应用不想让系统自动退出迁移源端应用,则可以设
    发表于 12-27 14:39

    HarmonyOS Next 应用元服务开发-应用接续动态配置迁移按需迁移页面

    按需迁移页面栈,支持应用动态选择是否进行页面栈恢复(默认进行页面栈信息恢复)。如果应用不想使用系统默认恢复的页面栈,则可以设置不进行页面栈迁移,而需要在onWindowStageRestore设置
    发表于 12-26 15:23

    HarmonyOS Next 应用元服务开发-应用接续动态配置迁移

    支持同应用中不同Ability迁移,一般情况下,迁移的双端是同Ability之间,但有些应用在不同设备类型下的同一个业务Abilit
    发表于 12-25 10:10

    HarmonyOS Next 应用元服务开发-分布式数据对象迁移数据文件资产迁移

    使用分布式数据对象迁移数据,当需要迁移的数据较大(100KB以上)或需要迁移文件时,可以使用分布式数据对象。原理与接口说明详见分布式数据对象设备
    发表于 12-24 10:11

    HarmonyOS Next 应用元服务开发-分布式数据对象迁移数据权限与基础数据

    使用分布式数据对象迁移数据,当需要迁移的数据较大(100KB以上)或需要迁移文件时,可以使用分布式数据对象。原理与接口说明详见分布式数据对象设备
    发表于 12-24 09:40

    HarmonyOS NEXT Developer Beta1最新术语表

    。 ArkUI 方舟开发框架,是为HarmonyOS平台开发极简、高性能、设备应用设计研发的UI开发框架,支撑开发者高效地构建设备应用U
    发表于 06-27 16:16

    国产系统重要突破!深开鸿KaihongOS率先连接HarmonyOS Next,实现生态互联

    合作伙伴和OpenHarmony核心共建单位,其国产操作系统KaihongOS已经成功与HarmonyOSNext实现了生态的互联互通。作为基于OpenHarmon
    的头像 发表于 06-25 11:24 579次阅读
    国产系统重要突破!深开鸿KaihongOS率先连接<b class='flag-5'>HarmonyOS</b> Next,实现<b class='flag-5'>跨</b>生态互联

    鸿蒙开发:应用组件设备交互(流转)【迁移

    迁移的核心任务是将应用的当前状态(包括页面控件、状态变量等)无缝迁移到另一设备,从而在新设备上无缝接续应用体验。这意味着用户在一台
    的头像 发表于 06-11 17:10 1287次阅读
    鸿蒙开发:应用组件<b class='flag-5'>跨</b><b class='flag-5'>设备</b>交互(流转)【<b class='flag-5'>跨</b>端<b class='flag-5'>迁移</b>】

    鸿蒙ArkTS声明式开发:平台支持列表【分布式迁移标识】 通用属性

    组件的分布式迁移标识,指明了该组件在分布式迁移场景下可以将特定状态恢复到对端设备
    的头像 发表于 06-07 21:15 411次阅读

    2024款鸿蒙OS 最新HarmonyOS Next_HarmonyOS4.0系列教程分享

    鸿蒙的出现,标志着中国科技的崛起。HarmonyOS就是我们说的华为鸿蒙系统,截止到2023年8月4日已有超过7亿台设备搭载了鸿蒙OS系统。据多家媒体报道,2024年国内有21所985大学都开设
    发表于 02-28 10:29

    HarmonyOS开发技术全面分析

    、调用)机制,支持对设 备的应用进行远程启动、远程调用、远程连接以及迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况,以及用户的习惯和意图,选择合适的设备运行分布
    发表于 02-21 16:31

    鸿蒙OS 设备迁移

    设备迁移(下文简称“迁移”)支持将 Page 在同一用户的不同设备迁移,以便支持用户无缝切换
    的头像 发表于 01-31 15:47 1149次阅读