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 无感,剩下的"搬什么、怎么还原",才是开发者真正要打磨的手艺。

相关推荐
威哥爱编程1 小时前
HarmonyOS 7 视觉 AI 进阶实战:人脸检测 + 通用文字识别(OCR)两步接入
harmonyos
李游Leo8 小时前
HarmonyOS 7 API 26 升级适配实战:API Change Assistant、targetSDKVersion 与兼容性回归
harmonyos
OH_TPC8 小时前
HarmonyOS APP开发---"智泊"智能停车App,需要用到这个库
harmonyos
用户117910488339 小时前
AI粘贴多行需求为什么会误执行?hmharness安全粘贴拆解 GitHub:swsgbl/hmharness
ai编程·harmonyos
用户0934077735149 小时前
HarmonyOS WPS Open SDK 实践:从 HAR 集成到 OpenFileRequest 最小闭环
typescript·harmonyos
威哥爱编程16 小时前
HarmonyOS 7 Fast Kit 算法加速实战:四大核心能力,把算力从系统里"借"出来
harmonyos·arkts
威哥爱编程16 小时前
HarmonyOS 7 游戏快启实战:Graphics Accelerate Kit 内存镜像秒级启动 + 预启动,把读条变成"秒进"
harmonyos·arkts
木子雨廷16 小时前
第 19 天|Preferences:轻量缓存与状态恢复
harmonyos
威哥爱编程16 小时前
HarmonyOS 7 精准碰一碰实战:识别触碰坐标,素材精准插入指定位置
harmonyos