【问题标题】:Android Wear MessageAPI - can't send messages on UI ThreadAndroid Wear MessageAPI - 无法在 UI 线程上发送消息
【发布时间】:2014-10-24 02:03:24
【问题描述】:

我正在按照 android wear 文档从一台设备向另一台设备发送消息 (https://developer.android.com/training/wearables/data-layer/messages.html)

但我认为示例中存在一些错误,因为发送消息方法抛出 IllegalStateException 并带有以下消息:不得在 UI 线程上调用等待

我该如何解决?

【问题讨论】:

    标签: android multithreading wear-os android-wear-data-api


    【解决方案1】:

    不要调用.await(),而是使用.setResultCallback()。例如,...

    result.setResultCallback(new ResultCallback<MessageApi.SendMessageResult>() {
                @Override
                public void onResult(MessageApi.SendMessageResult sendMessageResult) {
                    Log.v(TAG, "Sent message");
                }
            });
    

    【讨论】:

    • 谢谢,我没想到!
    【解决方案2】:

    你不能这样做,因为await() 阻塞了线程。

    您想使用异步线程执行此操作,例如使用 AsyncTask,如 Google Play 服务 文档中建议的那样:https://developer.android.com/google/auth/api-client.html#Sync

    是的,应该更新文档以说明为 Wear Api 做同样的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多