Uncommoncarp
Uncommoncarp

Reputation: 3

Sending DataMap in a background service android

I'm trying to send the content of a DataMap from an Android device to a wearable. It works fine when the app is in the foreground on my app but once I lock the mobile device it gets stuck at the pendingResult.await() and the wearable doesn't receive any data where as it normal would if I keep the app open.

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();
}

This method is in a class which extends WearableListenerService and I have added the XML in the AndroidMainfest for the service also. Am I doing something completely wrong or missing something?

Thanks

Upvotes: 0

Views: 213

Answers (2)

Jimmy Chen
Jimmy Chen

Reputation: 187

try to check google api client status for each send. use blockingConnect when google api client is not connected.

Upvotes: 0

Uncommoncarp
Uncommoncarp

Reputation: 3

Found out I was doing googleClient.disconnect() in my main activity onStop() which was causing it to hang as googleClient wasn't connected once my app was in the background.

Upvotes: 0

Related Questions