HarmonyOS 7 应用接续实战:continuable + onContinue 跨设备无缝流转,手机编辑平板接着搞

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

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

一、应用接续到底是什么

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

二、HarmonyOS 7 的接续底座

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

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

3.1 声明可接续

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

json5 复制代码
{
  "module": {
    "abilities": [
      { "name": "EntryAbility", "continuable": true, "launchType": "singleton" }
    ]
  }
}

3.2 按需开接续 + 源端保存

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

typescript 复制代码
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:

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

四、工程纪律与坑

V哥 列几条,少踩:

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

五、什么时候接

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


参考与出处

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


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

相关推荐
行者-全栈开发11 小时前
【鸿蒙心迹】深色模式适配全链路——从配置到自定义(HarmonyOS 7.x)
华为·harmonyos
行者-全栈开发21 小时前
【鸿蒙心迹】国际化 i18n 与多语言资源管理实战(HarmonyOS 7.x)
ui·华为·重构·国际化·harmonyos·多语言
OH_TPC1 天前
HarmonyOS APP开发---"云客服"远程视频客服App,需要用到这个库
harmonyos
逆回2 天前
给鸿蒙手机做一只 3D 宠物:五个把我卡住的问题
harmonyos
钉先生贾2 天前
性能、体积与稳定性:怎样写出可信的适配结论
华为·harmonyos
笑 总不会犯错2 天前
摆脱多端数据撕裂,鸿蒙分布式数据库同步与冲突合并
harmonyos
用户117910488332 天前
鸿蒙签名失败不是玄学:5 个证据点把 hapsigntool 一次排通 GitHub:swsgbl/hmharness
开源·ai编程·harmonyos
redtank20002 天前
纯血鸿蒙小工具三件套实测:弹幕手持、爱记录与仓库管理软件
学习·华为·智能手机·harmonyos
用户86194177207413 天前
uni-app 的蓝牙 API 在鸿蒙上不生效?我写了个兼容层,让老代码零改动跑起来
harmonyos
HarmonyOS_SDK3 天前
【HarmonyOS SDK Skills】挂载 Agent Skill,轻松跑通鸿蒙应用广告变现
harmonyos