DataAPI比MessageAPI慢得多吗?

5
我正在将可穿戴设备和智能手机之间的事件同步。由于我希望即使它们断开连接,我的事件也能被手机接收到,因此我开始使用 DataAPI而不是 MessageAPI,但现在“同步”需要大约1-2秒,而不是0.1-0.5秒(感知时间)。
在消息的情况下,我传输一个字符串路径,例如“/notification/click”,以及两个字节的原始数据。在DataAPI的情况下,我使用路径“/notification/click/1”和一个字节的原始数据。您是否也看到了这种行为?除了仅在设备离线时使用DataAPI外,您是否知道加速此过程的诀窍?
如果您想查看一些代码,请留下评论。由于该代码具有很多样板代码,因此我尚未添加它。

我发现它非常慢。你最终做了什么? - StuStirling
哦,我需要重新审查这个问题。那个巨大的延迟是某种 bug,在一段时间后消失了。然而,我使用许多位运算来减少数据传输量。这对你有帮助吗? - rekire
谢谢回复。我遇到的问题是,我在移动端将东西保存到数据API上很好,但在WearableListenerService中连接良好,但只有偶尔被调用。 - StuStirling
刚刚提交了一个问题http://stackoverflow.com/questions/33900980/is-dataapi-reliable-and-practically-real-time-extremely-delayed。这样对吗?如果您不删除数据,则不会调用“onDataChanged”吗? - StuStirling
2个回答

2
你可以通过查找连接的节点NodeApi.getConnectedNodes()来检查是否已连接,并查看它是否为空。但我认为这不是最好的解决方案。
如果您需要快速可靠地传递信息,请发送消息并设置数据项。在两者中都添加唯一标识符,以便您可以忽略被第二次传递的那个。这样,如果您已连接,您将快速收到消息,然后忽略数据项。如果未连接,则消息将丢失,但数据项将持久存在,并最终使您完成操作。但是请注意,您需要持久化唯一标识符以处理以下情况:
1.消息已传递,操作已完成, 2.由于任何原因而重新启动, 3.数据项最终会被传送,需要被忽略。

0

是的,在我的测试结果中,数据 API 比消息 API 慢(不止一次,超过两倍),你可以尝试一种方法来提高你的消息速度。 数据 API 有一个功能,它可以发送支持数据大小大于 100KB 的资产,但消息 API 不支持大于 100KB 的数据大小。 使用发送消息的通用接口,检查您要发送的数据大小,如果大于 100KB,请使用数据 API 资产发送,否则请使用消息 API。 这是我加速我的应用程序的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接