【问题标题】:Sending DataMap in a background service android在后台服务android中发送DataMap
【发布时间】:2015-03-05 12:25:36
【问题描述】:

我正在尝试将 DataMap 的内容从 Android 设备发送到可穿戴设备。当应用程序位于我的应用程序的前台时,它工作正常,但是一旦我锁定移动设备,它就会卡在 pendingResult.await() 并且可穿戴设备不会像我保持应用程序打开时那样正常接收任何数据.

public void send(final DataMap dataMap) {
new Thread(new Runnable() {
        @Override
        public void run() {
            PutDataMapRequest putDMR = PutDataMapRequest.create(WEARABLE_DATA_PATH);
            putDMR.getDataMap().putAll(dataMap);
            PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi.putDataItem(googleClient, request);
            DataApi.DataItemResult result = pendingResult.await();
            if(result.getStatus().isSuccess()) {
                Log.d("qwe", "Data item set: " + result.getDataItem().getUri());
            }             
        }
    }).start();
}

此方法位于扩展 WearableListenerService 的类中,我还在 AndroidMainfest 中为该服务添加了 XML。我是在做完全错误的事情还是遗漏了什么?

谢谢

【问题讨论】:

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


    【解决方案1】:

    尝试检查每次发送的 google api 客户端状态。 google api 客户端未连接时使用blockingConnect。

    【讨论】:

      【解决方案2】:

      发现我在我的主要活动 onStop() 中执行了 googleClient.disconnect(),这导致它挂起,因为一旦我的应用程序处于后台,googleClient 就没有连接。

      【讨论】:

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