Wear OS 数据层 API 由几种不同类型的客户端组成,这些客户端对于不同类型的数据以及在不同连接条件下很有用。
此页面介绍了每种客户端类型,并且包含一个表,比较了不同客户端的功能。使用这些信息,您可以选择最适合您应用的客户端类型集。
数据客户端
A DataClient
object lets you read or write to a DataItem
or Asset
每个
DataItem
都是一个在用户拥有的所有附近设备上广播和同步的信息单元。ADataItem
存储在永久性位置,并且您的设备可以读取其内容,直到数据项被删除。一个
Asset
用于更大的数据有效负载,例如图像或媒体文件。
消息客户端
一个 MessageClient
对象可以发送消息,并且非常适合远程过程调用 (RPC),例如使用 Wear OS 设备控制安装在手持设备上的应用版本。
消息非常适合使用 sendMessage()
进行单向请求,或者使用 sendRequest()
进行请求和响应通信模型。与数据客户端不同,消息客户端需要节点连接到网络才能发送消息。
The sendMessage()
method is a best effort to deliver to the remote node, and it doesn't contain any built-in retry mechanism. If the target device disconnects before the network transfer starts, the method returns TARGET_NODE_NOT_CONNECTED
.
频道客户端
一个 ChannelClient
对象提供设备之间的面向流的通信。一个频道是两个节点之间的双向通信管道,这对于以下用例很有用
- 当互联网不可用时,在两个或多个连接的设备之间传输数据文件。
ChannelClient
在DataClient
上节省了磁盘空间,后者在与连接的设备同步之前会在本地设备上创建资产的副本。 - 可靠地发送使用
MessageClient
发送的太大而无法发送的文件。 - 传输流数据,例如来自麦克风的声音数据。
打开通道后,您可以以连续字节流的形式发送和接收数据,而不是数据客户端所需的离散DataItem
单元。
您负责管理数据流并确保数据一致性。通道客户端不提供与数据客户端相同级别的数据自动同步功能。
客户端比较
下表比较了不同客户端的功能
客户端类型 | 数据持久性 | 支持大于 100 KB 的数据? | 使用的网络 | 离线工作? |
---|---|---|---|---|
数据客户端 | 数据无限期持久化 | 是(使用 Asset 对象) |
首选蓝牙。数据会备份到云端;如果蓝牙可用,此备份将异步完成 | 是,读写均可 |
消息客户端 | 无持久化,无重试 | 否 | 首选蓝牙,但如果仅有 Wi-Fi 连接可用,也可以使用 Wi-Fi | 否 |
频道客户端 | 无持久性(面向连接) | 是 | 首选蓝牙,但如果仅有 Wi-Fi 连接可用,也可以使用 Wi-Fi | 否 |