应用接续
时间: 2026-04-15 11:16:37
(部分内容来自网络,其真实性存疑,为了避免对您造成误导,请谨慎甄别。)
应用接续 跟你之前问的传文件、数据同步是一套体系里的,但它解决的是另一个问题:把整个应用的“使用状态”从一个设备搬到另一个设备。
一、应用接续是什么
简单说:用户在手机上看视频看到 15 分 30 秒,走到平板前一碰,平板上的同一个视频接着从 15 分 30 秒开始播。
这不是传一个文件,而是传当前正在干什么——包括页面、输入内容、播放进度、浏览位置等。
典型场景:
- 手机刷新闻,换到平板上继续刷到同一个位置
- 手机上编辑备忘录,换到电脑上继续编辑
- 手机上看视频,换到电视上继续看
- 手机上导航,换到车机上继续导航
二、跟之前问的有什么区别
先搞清楚这几个东西的关系:
| 能力 | 干什么用 | 传什么 |
|---|---|---|
| 应用接续 | 把当前使用状态搬到另一台设备,接着用 | 页面、进度、输入内容等"状态" |
| 分布式数据对象 | 多台设备实时同步一份内存数据 | 变量/对象的当前值 |
| 分布式数据库 | 持久化数据自动同步到多台设备 | 数据库里的记录 |
| 分布式文件 | 把文件放到一个共享目录,自动同步 | 整个文件 |
举个例子理解区别:
你在手机上写备忘录:
- 接续:写到一半,走到平板前点一下,平板上自动打开同一个备忘录并定位到刚才的光标位置——这是"接续"
- 分布式数据对象:手机和平板同时开着同一个备忘录,这边打字那边实时显示——这是"实时同步"
- 分布式数据库:手机保存了备忘录,过一会儿打开平板时备忘录已经在里面了——这是"持久化同步"
三、技术怎么实现的
核心接口
// 源端设备(比如手机):保存当前状态 onContinue(wantParam: Record) { // 把需要接续的数据存进去,比如正在看的文章URL、播放进度 wantParam['articleUrl'] = 'https://xxx.com/article/123'; wantParam['scrollPosition'] = 450; return AbilityConstant.OnContinueResult.AGREE; }
// 目标端设备(比如平板):恢复状态 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { if (launchParam.launchReason === AbilityConstant.LaunchReason.CONTINUATION) { let url = want.parameters?.['articleUrl']; let position = want.parameters?.['scrollPosition']; // 恢复页面并滚动到指定位置 } }
数据量限制
- 小于100KB:直接通过 wantParam 传就行
- 大于100KB:需要用分布式数据对象来传
四、配置要求
在 module.json5 里把 continuable 设为 true:
{
"abilities": [{
"name": "EntryAbility",
"continuable": true // 开启接续能力
}]
}五、三个前置条件
1. 两台设备登录同一个华为账号
2. 打开 Wi-Fi 和蓝牙(系统底层自动组网)
3. 设置里开启 多设备协同 > 接续 功能
六、跟其他 Kit 的配合关系
| 你之前问的 | 跟接续什么关系 |
|---|---|
| Distributed Service Kit | 提供底层设备发现、认证、连接能力,接续跑在这上面 |
| ArkData | 接续传大数据时用里面的分布式数据对象 |
| Service Collaboration Kit | 跨设备调能力,接续是其中一种场景 |
总结:应用接续就是让用户换设备不换体验,代码上就是实现 onContinue 保存状态 + onCreate/onNewWant 恢复状态。
如果你有具体的接续场景(比如视频续播、表单续填),我可以给你贴完整的代码。