请求迁移 实现 IAbility Continuation (重新开始,延续)的 Page 可以在其生命周期内,调用 continueAbility()或 continueAbilityReversibly()请求迁移。两者的区别是,通过后者发起的迁移此后可以进行回 迁。
try {
continueAbility();
} catch(#抓捕捕获) (Illegal合法的State情况国家Exception e条款) {
// Maybe another continuation 重新开始延续in progress进步发展.
…
}
以 Page 从设备 A 迁移到设备 B 为例,详细的流程如下:
设备 A 上的 Page 请求迁移。
系统回调设备 A 上 Page 及其 AbilitySlice 切片栈中所有 AbilitySlice 实例的
IAbilityContinuation.onStartContinuation()方法,以确认当前是否可以立即迁移。
如果可以立即迁移,则系统回调设备 A 上 Page 及其 AbilitySlice 栈中所有 AbilitySlice 实
例的 IAbilityContinuation.onSaveData()方法,以便保存迁移后恢复状态必须的数据。
如果保存数据成功,则系统在设备 B 上启动同一个 Page,并恢复 AbilitySlice 栈,然后回
调 IAbilityContinuation.onRestoreData()方法,传递此前保存的数据;此后设备 B 上此
Page 从 onStart()开始其生命周期回调。
系统回调设备 A 上 Page 及其 AbilitySlice 栈中所有 AbilitySlice 实例的
IAbilityContinuation.onCompleteContinuation()方法,通知数据恢复成功与否。