回复
HarmonyOS Next 应用元服务开发-应用接续动态配置迁移快速启动目标应用
鸿蒙时代
发布于 2024-12-31 09:50
浏览
0收藏
快速启动目标应用,默认情况下,发起迁移后不会立即拉起对端的目标应用,而是等待迁移数据从源端传输到对端后才会拉起应用。若应用希望在用户发起接续后立即被拉起,减少等待时间,提升体验,可以在module.json5文件的continueType标签中添加“_ContinueQuickStart”后缀,配置快速启动目标应用能力。示例如下:
{
"module": {
// ...
"abilities": [
{
// ...
"name": "EntryAbility"
"continueType": ['EntryAbility_ContinueQuickStart'], // 如果已经配置了continueType标签,可以在该标签值后添加'_ContinueQuickStart'后缀;如果没有配置continueType标签,可以使用AbilityName + '_ContinueQuickStart'作为continueType标签实现快速拉起目标应用
}
]
}
}
配置了快速拉起的应用,在用户发起接续时会立即收到一次launchReason为提前拉起(PREPARE_CONTINUATION)的onCreate()/onNewWant()请求,随后再收到一次launchReason为接续拉起(CONTINUATION)的onNewWant()请求。如下所示:
如果没有配置快速拉起,则触发迁移时只会收到一次启动请求:
配置快速拉起后,对应的 onCreate()/onNewWant() 接口实现可参考如下示例:
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const TAG: string = '[MigrationAbility]';
const DOMAIN_NUMBER: number = 0xFF00;
export default class MigrationAbility extends UIAbility {
storage : LocalStorage = new LocalStorage();
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
hilog.info(DOMAIN_NUMBER, TAG, '%{public}s', 'Ability onCreate');
// 1.已配置快速拉起功能,应用立即启动时触发应用生命周期回调
if (launchParam.launchReason === AbilityConstant.LaunchReason.PREPARE_CONTINUATION) {
//若应用迁移数据较大,可在此处添加加载页面(页面中显示loading等)
//可处理应用自定义跳转、时序等问题
// ...
}
}
onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {
hilog.info(DOMAIN_NUMBER, TAG, 'onNewWant');
// 1.已配置快速拉起功能,应用立即启动时触发应用生命周期回调
if (launchParam.launchReason === AbilityConstant.LaunchReason.PREPARE_CONTINUATION) {
//若应用迁移数据较大,可在此处添加加载页面(页面中显示loading等)
//可处理应用自定义跳转、时序等问题
// ...
}
// 2.迁移数据恢复时触发应用生命周期回调
if (launchParam.launchReason === AbilityConstant.LaunchReason.CONTINUATION) {
// 将上述保存的数据从want.parameters中取出恢复
let continueInput = '';
if (want.parameters !== undefined) {
continueInput = JSON.stringify(want.parameters.data);
hilog.info(DOMAIN_NUMBER, TAG, `continue input ${JSON.stringify(continueInput)}`);
}
// 触发页面恢复
this.context.restoreWindowStage(this.storage);
}
}
}
本文主要引用HarmonyOS官方文档
分类
赞
收藏
回复
相关推荐