Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java WearableListenerService仅在第二次尝试时处理onMessageReceived()_Java_Android_Wear Os - Fatal编程技术网

Java WearableListenerService仅在第二次尝试时处理onMessageReceived()

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

我有一个简单的Android Wear演示来演示消息API。我正在捕获手表上的输入并将其传递给手持设备进行云处理,因此以下扩展WearableListenerService的类正在手机上运行:

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次调用事件之前始终无法工作。