鸿蒙OS 跨设备迁移

跨设备迁移(下文简称“迁移”)支持将 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 的生命周期。

博世两家工厂荣获ROI中国工业4.0杰出贡献奖
芯茂微推出高可靠TO220F-6封装大功率电源芯片
基于HART协议的智能仪表实现在线诊断管理系统的设计
不要升级!iOS10.2.1要近2G内存却只是修复BUG
采用IH3605湿度传感器实现汽车空调一体化系统的设计
鸿蒙OS 跨设备迁移
华为P60是5g手机吗 是什么芯片?
数字资产交易所开发,交易网站开发公司,抵押借贷系统开发
2020年智能手机销量将下降 2.3% 出货量略高于13亿部
PLC设备维护保养方法的介绍
2022 Sigrity Aurora SPB 17.4 版本更新 I 支持生成同轴电缆和双绞线模型并进行仿真
小米利好不断 强势进军欧洲市场
填充母料水分测定仪技术资料
跑步耳机是挂脖好还是无线好,适合跑步的无线蓝牙耳机
壹周新讯第三代至强可扩展处理器简介
一种新型小型化窄带腔体滤波器的设计
28byj48步进电机的控制电路设计
基于MAX78000FTHR的机器学习实时处理方案
直流电机的正反转控制电路图解
15W无线充电器真的能够提高Galaxy S9的充电速度吗?