我正在尝试将消息从Android Companion应用程序发送到Pebble Watchface应用程序,但这会失败,而APP_MSG_BUSY
错误。阅读日志,我可以重建以下事件序列,这些事件正在反复发生:
- 卵石应用程序调用
app_message_outbox_send
。 - Android Companion应用程序接收
PebbleDataReceiver.receiveData
调用。 - Android Companion App调用
PebbleDataReceiver.sendAckToPebble(context, id)
。 - 卵石应用接收
outbox_sent
调用。 - Android Companion App做了一些工作,少于70ms。
- Android Companion App调用
PebbleKit.sendDataToPebble
。 - Pebble应用接收
inbox_dropped
使用APP_MSG_BUSY
。 -
adb logcat
显示以下警告:
pbl:[appMessage] transActionId没有UUID:-1
pbl:[jsinappmessagehandler] sendacknacktojs:运行:无法将ACK消息发送到JavaScript代码,因为UUID为null
APP_MSG_BUSY
表明正在进行的传入或传出消息。但是,您可以从上面的事件中看到没有发出的消息。另外,这是每个传入的消息都会发生这种情况,即使是卵石应用重新启动后也会收到的第一个。
任何人都可以对这里发生的事情提供一些见解?
我发现了我的错误:当我致电app_message_open
时,我传递了一个size_inbound
的值,该值太小而无法接收到发送的任何消息。不幸的是,我的inbox_dropped函数给出的AppMessageResult
不是人们所期望的APP_MSG_BUFFER_OVERFLOW
,而是APP_MSG_BUSY
。
现在,对于纯粹的猜测:可能会加剧的是size_outbound
足够大。实际上,我的错误是交换了size_inbound
和size_outbound
参数。也许从某种程度上,发送APP_MSG_BUFFER_OVERFLOW
是没有意义的,因为至少一个缓冲区足够大?