当前位置: 首页 > article >正文

HarmonyOS Next 应用元服务开发-应用接续动态配置迁移快速启动目标应用

快速启动目标应用,默认情况下,发起迁移后不会立即拉起对端的目标应用,而是等待迁移数据从源端传输到对端后才会拉起应用。若应用希望在用户发起接续后立即被拉起,减少等待时间,提升体验,可以在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()请求。如下所示:
 

HarmonyOS Next 应用元服务开发-应用接续动态配置迁移快速启动目标应用-鸿蒙开发者社区


 

HarmonyOS Next 应用元服务开发-应用接续动态配置迁移快速启动目标应用-鸿蒙开发者社区


如果没有配置快速拉起,则触发迁移时只会收到一次启动请求:
 

HarmonyOS Next 应用元服务开发-应用接续动态配置迁移快速启动目标应用-鸿蒙开发者社区


配置快速拉起后,对应的 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官方文档


http://www.kler.cn/a/460608.html

相关文章:

  • 今日复盘103周五(189)
  • API多并发识别、C#文字识别
  • 【VBA】EXCEL - VBA 遍历工作表的 5 种方法,以及注意事项
  • C#二维数组详解
  • 国产编辑器EverEdit - 常用资源汇总
  • C++STL中string头文件的各种函数以及使用方法与细节
  • 【linux学习指南】Ext系列文件系统(二)引⼊⽂件系统“块“分区inode概念
  • 老年认知衰弱分类模型在临床即时检测系统中的应用
  • R语言文件IO和并行计算优化实践
  • 在【IntelliJ IDEA】中配置【Tomcat】【2023版】【中文】【图文详解】
  • 大语言模型(LLM)一般训练过程
  • 压测--使用jmeter、nmon、nmon analysis进行压测与分析
  • 开源AI智能名片2+1链动模式O2O商城小程序:以情感共鸣驱动用户归属与品牌建设的深度探索
  • 视频首页uniapp
  • MySQL三层B+树能存多少数据
  • HttpServlet类的继承与doGet、doPost等方法的重写
  • Docker搭建Skywalking
  • 基于云计算的大数据项目实训室创新建设方案
  • 2025决战智驾:从中阶卷到L3,车企需要抓好一个数据闭环
  • 力扣面试题 - 40 迷路的机器人 C语言解法
  • Golang 中 Goroutine 的调度
  • 点跟踪基准最早的论文学习解读:TAP-Vid: A Benchmark for Tracking Any Point in a Video—前置基础
  • vue3 mounted 中调用 异步函数
  • 【Go】Go数据类型详解—函数
  • leetcode hot100 字符串解码
  • [python SQLAlchemy数据库操作入门]-17.使用 Flask-SQLAlchemy:构建股票数据 API