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 的生命周期。

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

    关注

    55

    文章

    1629

    浏览量

    42120
  • HarmonyOS
    +关注

    关注

    79

    文章

    1839

    浏览量

    29262
收藏 人收藏

    评论

    相关推荐

    如何理解鸿蒙OS设备的?

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

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

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

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

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

    #2020征文-手机#【鸿蒙基地】鸿蒙设备启动窗口:Page Ability

    HarmonyOS的核心特性(或称为卖点)之一就是软总线技术,而Page Ability的设备迁移是软总线的一个具体技术实现。所谓设备
    发表于 12-31 11:56

    #2020征文-手机#【鸿蒙基地】鸿蒙设备启动窗口:Page Ability

    HarmonyOS的核心特性(或称为卖点)之一就是软总线技术,而Page Ability的设备迁移是软总线的一个具体技术实现。所谓设备
    发表于 01-25 14:13

    HarmonyOS分布式——设备迁移

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

    华为系统升级鸿蒙os

    ?其中最受网友们所关注的便是鸿蒙OS手机版Beta3增加可以媲美iOS系统的内存管理,还有华为鸿蒙OS系统独有的多设备超级终端分布流转
    发表于 07-28 07:56

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

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

    请问DevEco Studio支持打开两个远程模拟器,演示设备迁移吗?

    DevEco Studio支持打开两个远程模拟器,演示设备迁移吗?
    发表于 06-07 10:02

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

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

    华为手机明年将全面支持鸿蒙OS 2.0,鸿蒙OS支持的设备不仅是手机?

    在之前的华为开发者大会上,余承东曾经表示华为手机明年将全面支持鸿蒙OS 2.0。日前,鸿蒙OS升级机型在网上曝光,这次升级也是分批次进行,而搭载麒麟9000处理器的
    的头像 发表于 10-11 09:00 2227次阅读

    华为发布鸿蒙OS Beta版

    会越来越好,明年1亿台设备都将有机会体验鸿蒙OS。 此前,华为发布会上曾宣布,鸿蒙系统在2021年4月将面向内存128MB-4GB终端设备
    的头像 发表于 12-17 08:41 2590次阅读

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

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

    鸿蒙os怎么升级

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

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

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