Wear OS 数据层 API 包含几种不同类型的客户端,它们适用于不同类型的数据和不同的连接条件。
本页介绍了每种客户端类型,并包含一个比较不同客户端功能的表格。您可以使用这些信息来选择最适合您应用的客户端类型。
数据客户端
一个 DataClient
对象允许您读取或写入 DataItem
或 Asset
每个
DataItem
都是一个信息单元,可在用户拥有的所有附近设备上广播和同步。一个DataItem
会持久存储,您的设备可以读取其内容,直到该数据项被删除。一个
Asset
适用于较大的数据负载,例如图片或媒体文件。
消息客户端
一个 MessageClient
对象可以发送消息,非常适合远程过程调用 (RPC),例如使用 Wear OS 设备来控制安装在手持设备上的应用版本。
消息非常适合使用 sendMessage()
进行单向请求,或者使用 sendRequest()
进行请求-响应通信模型。与数据客户端不同,消息客户端需要节点连接到网络才能发送消息。
在向远程节点传送时,sendMessage()
方法会尽力而为,但它不包含任何内置重试机制。如果目标设备在网络传输开始前断开连接,该方法将返回 TARGET_NODE_NOT_CONNECTED
。
通道客户端
一个 ChannelClient
对象提供设备之间的流式通信。通道是两个节点之间的双向通信管道,适用于以下用例:
- 在没有互联网连接时,在两个或更多连接设备之间传输数据文件。
ChannelClient
比DataClient
更节省磁盘空间,因为DataClient
在与连接设备同步之前会在本地设备上创建资产副本。 - 可靠地发送使用
MessageClient
无法发送的过大文件。 - 传输流数据,例如麦克风中的语音数据。
打开通道后,您可以以连续的字节流形式发送和接收数据,而不是数据客户端所需的离散 DataItem
单元。
您负责管理数据流并保持数据一致性。通道客户端不提供数据客户端那样级别的自动数据同步。
客户端比较
下表比较了不同客户端的功能
客户端 类型 | 数据持久性 | 支持大于 100 KB 的数据? | 要使用的网络 | 支持离线工作? |
---|---|---|---|---|
数据客户端 | 数据无限期持久化 | 是(使用 Asset 对象) |
首选蓝牙。数据会备份到云端;如果蓝牙可用,此备份会异步进行。 | 是,支持读写 |
消息客户端 | 无持久性,无重试 | 否 | 首选蓝牙,但如果仅有 Wi-Fi 连接可用,则可以使用 Wi-Fi | 否 |
通道客户端 | 无持久性(面向连接) | 是 | 首选蓝牙,但如果仅有 Wi-Fi 连接可用,则可以使用 Wi-Fi | 否 |