Java WearableListenerService仅在第二次尝试时处理onMessageReceived()
我有一个简单的Android Wear演示来演示消息API。我正在捕获手表上的输入并将其传递给手持设备进行云处理,因此以下扩展WearableListenerService的类正在手机上运行:Java WearableListenerService仅在第二次尝试时处理onMessageReceived(),java,android,wear-os,Java,Android,Wear Os,我有一个简单的Android Wear演示来演示消息API。我正在捕获手表上的输入并将其传递给手持设备进行云处理,因此以下扩展WearableListenerService的类正在手机上运行: public class ListenerService extends WearableListenerService { private static final String MESSAGE_PATH = "/handle-inbound-message"; @Override
public class ListenerService extends WearableListenerService {
private static final String MESSAGE_PATH = "/handle-inbound-message";
@Override
public void onMessageReceived(MessageEvent messageEvent) {
super.onMessageReceived(messageEvent);
if(messageEvent.getPath().equals(MESSAGE_PATH)) {
updateData(new String(messageEvent.getData()));
}
}
private void updateData(final String volume) {
new Thread(new Runnable() {
@Override
public void run() {
// do neat stuff with the inbound data
}
}).start();
}
}
…通过点击可穿戴应用程序上的按钮生成消息的可穿戴代码如下所示:
private void sendToHandheld(final byte[] volume) {
if(nodeId != null) {
new Thread(new Runnable() {
@Override
public void run() {
client.blockingConnect(CONNECTION_TIME_OUT_MS, TimeUnit.MILLISECONDS);
Wearable.MessageApi.sendMessage(client, nodeId, MESSAGE_PATH, volume);
client.disconnect();
}
}).start();
}
}
代码运行良好…除了我必须在可穿戴应用程序中单击按钮两次,才能启动onMessageReceived()。应用程序启动了,但第一次没有收到消息…应用程序仍然打开,我再次单击按钮,它会完美启动。有人能看出我在哪里犯了错误吗
(另外,我看到很多代码演示了一个repo,人们不调用super.onMessageReceived())好的,我想我解决了这个问题-我在
onMessageReceived()
中注释掉了超类调用的那一行……这就解决了问题
成功 您检查了两端的日志了吗?有两件事需要注意:
super.onMessageReceived()
为空,并且已经在后台线程上调用了onMessageReceived()
,尽管我认为两者都与您的问题无关。@AliNaddaf-谢谢您的评论…我正在注销双方的所有活动,可穿戴应用程序中的UI元素工作正常,但onMessageReceived()在第2次、第3次、第4次……第n次调用事件之前始终无法工作。