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