Диагностическое сообщение с телефона на андроид упало из-за APP_MSG_BUSY?
Я пытаюсь отправить сообщение из приложения-компаньона для Android в приложение Pebble watchface, но это не удается с помощью APP_MSG_BUSY
ошибка. Читая логи, я могу восстановить следующую последовательность событий, которая происходит неоднократно:
- Pebble вызывает приложение
app_message_outbox_send
, - Приложение-компаньон для Android получает
PebbleDataReceiver.receiveData
вызов. - Android-приложение звонит
PebbleDataReceiver.sendAckToPebble(context, id)
, - Приложение Pebble получает
outbox_sent
вызов. - Android-приложение выполняет некоторую работу, которая занимает около 70 мс.
- Android-приложение звонит
PebbleKit.sendDataToPebble
, - Приложение Pebble получает
inbox_dropped
позвонить сAPP_MSG_BUSY
, adb logcat
показывает следующие предупреждения:
Pbl: [AppMessage] нет UUID для ID транзакции: -1
Pbl: [JsInAppMessageHandler] sendAckNackToJs: run: не может отправить подтверждающее сообщение в код JavaScript, поскольку uuid имеет значение null
APP_MSG_BUSY
предполагает наличие входящего или исходящего сообщения. Однако из приведенных выше событий видно, что исходящих сообщений нет. Кроме того, это происходит для каждого входящего сообщения, даже первого, которое приложение Pebble получает после перезапуска.
Кто-нибудь может предложить некоторое понимание того, что здесь происходит?
1 ответ
Я нашел свою ошибку: когда я позвонил app_message_open
Я передал значение для size_inbound
это было слишком мало, чтобы получить какие-либо сообщения, которые были отправлены. К сожалению, AppMessageResult
дано моей функции inbox_dropped не было APP_MSG_BUFFER_OVERFLOW
как и следовало ожидать, но APP_MSG_BUSY
,
Теперь для спекуляции: что могло усугубить это size_outbound
был достаточно большим. На самом деле, моя ошибка была обменять size_inbound
а также size_outbound
аргументы. Может быть, по какой-то логике, не было смысла отправлять APP_MSG_BUFFER_OVERFLOW
потому что хотя бы один из буферов был достаточно большим?