在后台服务android中发送DataMap

时间:2015-03-03 20:11:10

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

我正在尝试将数据地图的内容从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。我做错了什么或遗失了什么?

由于

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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