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

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

3天内不再提示

鸿蒙OS 跨设备迁移

王程 2024-01-31 15:47 次阅读

跨设备迁移(下文简称“迁移”)支持将 Page 在同一用户的不同设备间迁移,以便支持用户无缝切换的诉求。以 Page 从设备 A 迁移到设备 B 为例,迁移动作主要步骤如下:

  • 设备 A 上的 Page 请求迁移。
  • HarmonyOS 处理迁移任务,并回调设备 A 上 Page 的保存数据方法,用于保存迁移必须的数据。
  • HarmonyOS 在设备 B 上启动同一个 Page,并回调其恢复数据方法。
    开发者可以参考以下详细步骤开发具有迁移功能的 Page。

实现 IAbilityContinuation 接口

onStartContinuation()
Page 请求迁移后,系统首先回调此方法,开发者可以在此回调中决策当前是否可以执行迁移,比如,弹框让用户确认是否开始迁移。

onSaveData()
如果 onStartContinuation() 返回 true ,则系统回调此方法,开发者在此回调中保存必须传递到另外设备上以便恢复 Page 状态的数据。

onRestoreData()
源侧设备上 Page 完成保存数据后,系统在目标侧设备上回调此方法,开发者在此回调中接受用于恢复 Page 状态的数据。注意,在目标侧设备上的 Page 会重新启动其生命周期,无论其启动模式如何配置。且系统回调此方法的时机在 onStart() 之前。

onCompleteContinuation()
目标侧设备上恢复数据一旦完成,系统就会在源侧设备上回调 Page 的此方法,以便通知应用迁移流程已结束。开发者可以在此检查迁移结果是否成功,并在此处理迁移结束的动作,例如,应用可以在迁移完成后终止自身生命周期。

onRemoteTerminated()
如果开发者使用 continueAbilityReversibly() 而不是 continueAbility(),则此后可以在源侧设备上使用 reverseContinueAbility() 进行回迁。这种场景下,相当于同一个 Page(的两个实例)同时在两个设备上运行,迁移完成后,如果目标侧设备上 Page 因任何原因终止,则源侧 Page 通过此回调接收终止通知。

说明
一个应用可能包含多个 Page,仅支持迁移的 Page 需要实现 IAbilityContinuation 接口。同时,此 Page 所包含的所有 AbilitySlice 也需要实现此接口。

请求迁移

实现 IAbilityContinuation 的 Page 可以在其生命周期内,调用 continueAbility() 或 continueAbilityReversibly() 请求迁移。两者的区别是,通过后者发起的迁移此后可以进行回迁。

try {
    continueAbility();
} catch (IllegalStateException e) {
    // Maybe another continuation in progress.
    ...
}

以 Page 从设备 A 迁移到设备B为例,详细的流程如下:

1.设备 A 上的 Page 请求迁移。
2.系统回调设备 A 上 Page 及其 AbilitySlice 栈中所有 AbilitySlice 实例的 IAbilityContinuation.onStartContinuation() 方法,以确认当前是否可以立即迁移。
3.如果可以立即迁移,则系统回调设备 A 上 Page 及其 AbilitySlice 栈中所有 AbilitySlice 实例的 IAbilityContinuation.onSaveData() 方法,以便保存迁移后恢复状态必须的数据。
4.如果保存数据成功,则系统在设备 B 上启动同一个 Page ,并恢复 AbilitySlice 栈,然后回调 IAbilityContinuation.onRestoreData() 方法,传递此前保存的数据;此后设备 B 上此 Page 从 onStart() 开始其生命周期回调。
6.系统回调设备 A 上 Page 及其 AbilitySlice 栈中所有 AbilitySlice 实例的 IAbilityContinuation.onCompleteContinuation() 方法,通知数据恢复成功与否。

请求回迁

使用 continueAbilityReversibly() 请求迁移并完成后,源侧设备上已迁移的 Page 可以发起回迁,以便使用户活动重新回到此设备。

try {
    reverseContinueAbility();
} catch (IllegalStateException e) {
    // Maybe another continuation in progress.
    ...
}

以Page从设备A迁移到设备B后并请求回迁为例,详细的流程如下:

1.设备 A 上的 Page 请求回迁。
2.系统回调设备 B 上 Page 及其 AbilitySlice 栈中所有 AbilitySlice 实例的 IAbilityContinuation.onStartContinuation() 方法,以确认当前是否可以立即迁移。
3.如果可以立即迁移,则系统回调设备 B 上 Page 及其 AbilitySlice 栈中所有 AbilitySlice 实例的 IAbilityContinuation.onSaveData() 方法,以便保存回迁后恢复状态必须的数据。
4.如果保存数据成功,则系统在设备 A 上 Page 恢复 AbilitySlice 栈,然后回调 IAbilityContinuation.onRestoreData() 方法,传递此前保存的数据。
5.如果数据恢复成功,则系统终止设备 B 上 Page 的生命周期。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 鸿蒙
    +关注

    关注

    57

    文章

    2335

    浏览量

    42794
  • HarmonyOS
    +关注

    关注

    79

    文章

    1972

    浏览量

    30123
收藏 人收藏

    评论

    相关推荐

    如何理解鸿蒙OS设备的?

    谁能帮忙解释鸿蒙OS是怎样实现平台的?
    发表于 09-08 18:17

    鸿蒙OS适用的全场景到底什么意思?

    上,未来会有越来越多的智能设备使用开源的鸿蒙OS。华为消费者业务CEO余承东在介绍鸿蒙OS开发初衷时表示:“随着全场景智慧时代的到来,华为认
    发表于 09-25 09:25

    鸿蒙os系统是什么意思 鸿蒙os系统有什么作用

    适配智慧屏,未来它将适配手机,平板,电脑,智能汽车,可穿戴设备等多终端设备鸿蒙微内核是基于微内核的全场景分布式OS,可按需扩展,实现更广泛的系统安全,主要用于物联网,特点是低时延,甚
    发表于 12-17 11:34

    HarmonyOS分布式——设备迁移

    HarmonyOS分布式——设备迁移
    发表于 06-26 14:34

    通过HarmonyOS分布式能力实现任务的设备迁移设计资料分享

    的文档或图片素材,此时需要在不同设备间反复操作。想要解决这些问题,我们可以通过 HarmonyOS 的分布式能力实现任务的设备迁移,保证业务在手机、平板等终端间无缝衔接,轻松的完成多
    发表于 03-25 16:59

    HarmonyOS应用开发-DiseributedVideoCodelab设备视频迁移

    说明:此Demo用于设备迁移视频内容。您可以方便地跨设备迁移视频内容,然后在源设备远程控制、操
    发表于 07-05 10:24

    华为鸿蒙OS正式发布 它的安全性能如何

    鸿蒙OS采用全新的微内核设计,安全性更强,时延更低,同时还将用于可信执行环境,通过形式化的方式提升可信安全;鸿蒙OS可通过统一多终端开发工具IDE进行开发,方便开发者进行多语言统一编译
    的头像 发表于 08-09 17:25 1839次阅读

    华为鸿蒙OS又有吓人的设计 苹果的Carplay在鸿蒙OS面前真的自叹不如

    的终端,包括汽车、电视机、手机、可穿戴设备等等终端上,所以华为鸿蒙OS的使用范围从介绍上来看还是非常广泛地。
    的头像 发表于 08-27 10:25 8859次阅读

    鸿蒙OS与Lite OS的区别是什么

    鸿蒙OS鸿蒙OS面向未来、面向全场景、分布式。在单设备系统能力基础上,鸿蒙
    的头像 发表于 12-24 12:40 4979次阅读

    华为鸿蒙OS系统2.0有哪些优势?具备哪些功能?

    鸿蒙OS 2.0终于从传闻走到了台前,具备设备、服务流转、极速直达、可视可说、隐私安全五大能力。
    的头像 发表于 04-28 17:24 7588次阅读

    鸿蒙os怎么升级

    6月2日,华为正式发布了鸿蒙armonyOS 2系统,那么鸿蒙os如何升级?现将鸿蒙os升级方式告知如下。
    的头像 发表于 06-08 16:26 2720次阅读

    什么是HarmonyOS“设备迁移”?

    什么是HarmonyOS“设备迁移”? HarmonyOS“设备迁移”是指将承载业务的Pag
    的头像 发表于 06-25 17:32 5319次阅读

    鸿蒙OS 分布式任务调度

    鸿蒙OS 分布式任务调度概述 在 HarmonyO S中,分布式任务调度平台对搭载 HarmonyOS 的多设备构筑的“超级虚拟终端”提供统一的组件管理能力,为应用定义统一的能力基线、接口
    的头像 发表于 01-29 16:50 482次阅读

    鸿蒙OS和开源鸿蒙什么关系?

    开源鸿蒙(Open Harmony) 鸿蒙系统愿来的设计初衷,就是让所有设备都可以运行一个系统,但是每个设备的运算能力和功能都不同,所以内核的设计上,采用了微内核的设计,除了最基础的功
    的头像 发表于 01-30 15:44 1122次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b>和开源<b class='flag-5'>鸿蒙</b>什么关系?

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

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