按需迁移页面栈,支持应用动态选择是否进行页面栈恢复(默认进行页面栈信息恢复)。如果应用不想使用系统默认恢复的页面栈,则可以设置不进行页面栈迁移,而需要在onWindowStageRestore设置迁移后进入的页面,参数定义见SUPPORT_CONTINUE_PAGE_STACK_KEY。
说明,当前仅支持router路由的页面栈信息自动恢复,暂不支持navigation路由的页面栈自动恢复。
如果应用使用navigation路由,可以设置不进行页面栈迁移,并将需要接续的页面(或页面栈)信息保存在want中传递,然后在目标端手动加载指定页面。应用在源端的页面栈中存在Index和Second路由,而在目标端恢复时不需要按照源端页面栈进行恢复,需要恢复到指定页面。
示例:应用迁移不需要自动迁移页面栈信息
// EntryAbility.ets
import { AbilityConstant, UIAbility, wantConstant } from '@kit.AbilityKit';
import { window } from '@kit.ArkUI';
export default class EntryAbility extends UIAbility {// ...onContinue(wantParam: Record<string, Object>) {console.info(`onContinue version = ${wantParam.version}, targetDevice: ${wantParam.targetDevice}`);wantParam[wantConstant.Params.SUPPORT_CONTINUE_PAGE_STACK_KEY] = false;return AbilityConstant.OnContinueResult.AGREE;}// ...onWindowStageRestore(windowStage: window.WindowStage) {// 若不需要自动迁移页面栈信息,则需要在此处设置应用迁移后进入的页面windowStage.loadContent('pages/Index', (err, data) => {if (err.code) {console.info('Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');return;}console.info('Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');});}
}
本文主要引用HarmonyOS官方文档