【发布时间】:2023-03-12 21:12:02
【问题描述】:
在 sendMessage 之后,我得到一个 PendingResult 并设置一个 onResult 回调。这个回调永远不会发生。
PendingResult<MessageApi.SendMessageResult> messageResult = Wearable.MessageApi
.sendMessage(googleApiClient, senderNodeId, NOTE_REPLY_PATH,
replyMessage.getBytes());
if (messageResult.isCanceled())
Log.d(TAG, "result cancelled!");
messageResult.setResultCallback(new ResultCallback<MessageApi.SendMessageResult>()
{
@Override
public void onResult(MessageApi.SendMessageResult sendMessageResult)
{
replyStatus = sendMessageResult.getStatus();
runOnUiThread(new Runnable()
{
@Override
public void run()
{
Log.d(TAG, "confirm result");
confirm(replyStatus.getStatusCode() == WearableStatusCodes.SUCCESS);
}
});
}
isCancelled 并非如此。我尝试了 awat() 但这不能在 UI 线程(这是)上调用。令人不安的是,您必须在调用 sendMessage 之后设置回调(如果那时它已经发送了怎么办)。但这是文档想要的方式。
基本上我的“确认结果”永远不会发生。
任何想法为什么?谢谢
编辑:
结果有时我没有连接到任何节点。这可能就是为什么。那么如果它不能调用回调,这个接口是如何传达的。这个sendmessage界面设计很差。相反,它应该类似于
status = sendMessage(callback, other args);
因为它无法告诉你回调不可能发生。
【问题讨论】: