在后台服务中发送 DataMap android
Sending DataMap in a background service android
我正在尝试将 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 的 class 中,我还在 AndroidMainfest 中为该服务添加了 XML。我做错了什么或遗漏了什么吗?
谢谢
发现我在我的主要 activity onStop() 中执行 googleClient.disconnect() 这导致它挂起,因为一旦我的应用程序在后台,googleClient 就没有连接。
尝试检查 google api 每次发送的客户端状态。
当 google api 客户端未连接时使用 blockingConnect。
我正在尝试将 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 的 class 中,我还在 AndroidMainfest 中为该服务添加了 XML。我做错了什么或遗漏了什么吗?
谢谢
发现我在我的主要 activity onStop() 中执行 googleClient.disconnect() 这导致它挂起,因为一旦我的应用程序在后台,googleClient 就没有连接。
尝试检查 google api 每次发送的客户端状态。 当 google api 客户端未连接时使用 blockingConnect。