Задержка в Android Wear putDataItem() и вызов onDataChanged()

Я хочу использовать кнопку действия «Открыть» в уведомлении в моем приложении Android Wear, чтобы открыть диалоговое окно с некоторыми данными о задаче на моем КПК.
Для этого я помещаю свое сообщение в запрос PutDataMapRequest и использую следующий метод. в моем носимом коде:

PutDataMapRequest dataMap = PutDataMapRequest.create("/task/" + "1");

dataMap.getDataMap().putString(DataMapKeys.TASK_MESSAGE, message);
....
dataMap.getDataMap().putLong("timestamp", System.currentTimeMillis());

PutDataRequest putDataRequest = dataMap.asPutDataRequest();

Wearable.DataApi.putDataItem(googleApiClient, putDataRequest).setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
    @Override
    public void onResult(DataApi.DataItemResult dataItemResult) {
        Log.d(TAG, "Sending task data: " + dataItemResult.getStatus().isSuccess());
    }
});

А затем, чтобы поймать его в моем WearableListenerService на моем портативном/мобильном устройстве:

@Override
public void onDataChanged(DataEventBuffer dataEvents) {
    Log.d(TAG, "Received task data, now opening dialog..");
}

Однако существует значительная задержка (около 10 секунд) между вызовом onResult() в методе putDataItem() в моем приложении Wear и вызовом метода onDataChanged() в моем мобильном приложении.
Это означает, что когда я нажимаю кнопку "Открыть " Кнопка действия в уведомлении на моих часах, диалоговое окно открывается примерно через 10 секунд на моем телефоне.
Я бы хотел, чтобы это было мгновенно, если это возможно.

Возможно ли это или я делаю что-то не так в своем коде?

Лучший,


person appel    schedule 10.06.2015    source источник


Ответы (1)


Переключитесь на использование MessageApi. Он предназначен для таких ситуаций: не имеет гарантии доставки (если устройства в данный момент не подключены), но работает быстро. И нажатие кнопки — это именно та ситуация, в которой ее следует использовать (потому что пользователь может ее повторить).

person gruszczy    schedule 10.06.2015