Android Wear putDataItem()的延迟和onDataChanged()的调用

时间:2015-06-10 11:57:56

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

我想在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..");
}

但是,在我的Wear应用中的onResult()方法中调用putDataItem()与调用我的onDataChanged()方法之间存在显着延迟(大约10秒)移动应用。
这意味着当我按下手表上通知的“打开”操作按钮时,对话框会在我的手机上大约10秒后打开。
我希望这是即时的,如果可能的。

这是可能的,还是我在代码中做错了什么?

最佳,

1 个答案:

答案 0 :(得分:1)

切换为使用MessageApi。它适用于这样的情况:它没有交付保证(如果设备目前没有连接),但速度很快。并且单击按钮正是应该使用它的情况(因为用户可以重复它)。