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

时间:2014-12-27 23:56:20

标签: java android wear-os

我有一个简单的Android Wear演示来演示Message 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()。该应用程序启动,但第一次没有收到消息...应用程序仍然打开,我再次单击该按钮,它完全启动。任何人都可以看到我可能犯了什么错误吗?

(另外,我看到很多代码演示了人们不会调用super.onMessageReceived()的回购。)

1 个答案:

答案 0 :(得分:0)

好吧,我想我已经解决了这个问题 - 我在onMessageReceived()中注释掉了调用超类的行......并修复了它。

SUCCESS!

相关问题