本文聚焦 HarmonyOS 7(API 26)的「应用接续」能力,把"手机编辑到一半、平板接着搞"的完整链路拆清楚。文中 API 名与接口来自官方文档,运行表现以真机实测为准。

写笔记写到一半要出门,手机往平板一划,页面栈、滚动位置、输入框内容原样接着来——不是"云端保存再重新打开",而是真正的无缝接续。HarmonyOS 7 把"应用接续"列为无缝流转跨设备任务的核心能力,底层是升级到 软总线 2.0(官方披露延迟降到 8ms、支持最多 16 台设备协同、连接建立缩到 200ms)。V哥 把接入链路拆成六块讲,照着做就能让应用"不站桩"。

一、应用接续到底是什么

传统跨设备靠云同步:本地存、传服务器、对端再拉。链路长、有延迟、还依赖网络。应用接续(Continuation)走的是另一条路:把应用的运行状态(页面栈 + 控件状态 + 你的业务数据)整体迁移到目标设备。用户在手机上刷到一半的文章,点一下平板 Dock 栏的应用图标,平板从断点继续——视频续播、笔记续写、阅读进度同步,都是这套机制。它和云同步的区别,一句话:云同步是"数据副本",接续是"任务上下文的原样转移"。

云同步 vs 应用接续

二、HarmonyOS 7 的接续底座

接续跑在分布式软总线之上,开发者不用碰底层传输,只需要做三件事:启用能力、保存数据、恢复数据。HarmonyOS 7 的软总线 2.0 把延迟压到 8ms、连接建立 200ms、最多 16 台设备协同,意味着接续的"搬运动作"本身几乎无感。但能迁多顺,最终取决于你在 onContinue 里塞了什么、在 onCreate 里怎么还原。

三、三步接入(含真实 API)

3.1 声明可接续

module.json5 的 ability 里把 continuable 设为 true——这是系统触发接续流程的前提,不配就"不让迁":

{
  "module": {
    "abilities": [
      { "name": "EntryAbility", "continuable": true, "launchType": "singleton" }
    ]
  }
}

3.2 按需开接续 + 源端保存

不是所有页面都该接续。在需要接续的页面调 setMissionContinueState(ACTIVE) 动态打开,源端 onContinue(wantParam) 里把迁移数据以键值对存进去,并返回 AGREE

import { UIAbility, AbilityConstant } from '@kit.AbilityKit';

// 页面可见时启用接续
this.context.setMissionContinueState(AbilityConstant.ContinueState.ACTIVE, () => {});

// 源端:保存迁移数据,返回 AGREE 同意流转
onContinue(wantParam: Record<string, Object>): AbilityConstant.OnContinueResult {
  const targetVersion = wantParam.version as number; // 对端应用版本号
  if (targetVersion < 1000) {
    return AbilityConstant.OnContinueResult.MISMATCH; // 版本不兼容,终止协商
  }
  wantParam['data'] = AppStorage.get('draft') ?? ''; // 你的业务数据
  return AbilityConstant.OnContinueResult.AGREE;
}

3.3 对端恢复

目标端在 onCreate(冷启动 / 多实例热启动)或 onNewWant(单实例热启动)里,用 LaunchReason.CONTINUATION 判断是不是接续启动,再从 want.parameters 取数据还原 UI:

onCreate(want: Want, _param: AbilityConstant.LaunchParam): void {
  if (want.parameters?.launchReason === AbilityConstant.LaunchReason.CONTINUATION) {
    const data = want.parameters['data'] as string; // 还原输入框 / 滚动位置 / 路由
  }
}

应用接续链路

四、工程纪律与坑

V哥 列几条,少踩:

  1. 数据量卡 100KBwantParam 传的接续数据建议控制在 100KB 以下;超过就走分布式数据对象 / 分布式文件系统,别硬塞。
  2. 版本兼容必须校验onContinue 入参 wantParam.version 是对端版本号,不匹配就返回 MISMATCH 并提示用户升级,否则迁过去界面错乱。
  3. 敏感数据加密:跨设备传输的隐私内容走 @ohos.security.huks 加密再传,别裸奔。
  4. 失败要回退:目标设备离线或传输中断,提示用户并保留源端本地状态,别把数据弄丢。
  5. 恢复时机区分冷/热启:单实例用 onNewWant、冷启用 onCreate,两段都要写恢复逻辑,否则某些启动路径接续失效。

五、和前面篇章的关系

接续依赖分布式软总线传输,和第 37 篇的网络加速是"管道与搬运"的关系——软总线把状态搬过去,网络优化保证搬得稳;和第 35 篇多设备 UX 也相关:接续到平板的页面,目标设备布局必须靠断点自适应接住,否则手机竖屏的布局在平板上照样错位。三者共同支撑"全场景无缝"这个 HarmonyOS 7 的主线。

六、什么时候接

阅读、笔记、视频续播、文档编辑这类有明确"进度"概念的应用,V哥 建议把应用接续列为首屏体验必做;导航类可结合 CarKit 把导航流转到车机。收益很实:学习进度同步延迟 < 200ms、视频续播"点图标即接着放"——这些都是用户能直接感知的"鸿蒙味"体验。


参考与出处

以下为本文涉及的官方文档与能力说明,建议以官方最新版本为准。

  • 应用接续概述(continuable / onContinue / onCreate / onNewWant / 版本兼容):https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-continue-cast
  • 多设备流转(continuable 配置 / 分布式权限 / 导航流转车机):https://developer.huawei.com/consumer/cn/blog/topic/03209597056148208
  • UIAbility 组件启动模式(launchType / 单实例与多实例热启动):https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/
  • HarmonyOS 7 新能力一览(应用接续 · 无缝流转跨设备任务):https://developer.huawei.com/consumer/cn/features/

最后一句:应用接续的本质不是"再传一份数据",而是把任务的上下文原样搬过去——HarmonyOS 7 用软总线 2.0 把搬运做到 8ms 无感,剩下的"搬什么、怎么还原",才是开发者真正要打磨的手艺。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐