У меня есть циферблат с сопутствующим приложением для телефона. Он использует Wearable.DataApi для синхронизации изменений между телефоном и часами. У меня есть настройка DataApi.DataListener и изменения синхронизации, сделанные на стороне часов или телефона. У меня нет проблем с обменом данными между телефоном и ОДНИМИ часами.
Проблема заключается в том, когда у меня есть несколько часов, использующих один и тот же циферблат, если изменения на стороне часов или телефона вносятся быстро, кажется, что они зацикливаются и начинают мигать изменения на всех устройствах. Поэтому, если я изменю цвет, нажав часы, если я нажму несколько раз быстро, чтобы сделать это, все устройства начнут переключаться между всеми цветами и потребуется некоторое время, прежде чем они догонят и остановятся.
Если я медленно меняю параметры, проблем не возникает. Я помещаю журнал в прослушиватель DataApi и вижу, что оба uri вносят изменения, но по какой-то причине кажется, что они зацикливаются при быстром изменении. Есть ли способ предотвратить это?
Я знаю, что это может показаться не большой проблемой, но если у пользователя есть 2 часа и он случайно быстро меняет параметр или параметры, он начнется с изменения параметров или цветов. Я хочу предотвратить это.
Вот как я добавляю своего слушателя в метод onConnected
Wearable.DataApi.addListener(mGoogleApiClient, dataListener);
И это мой метод слушателя
DataApi.DataListener dataListener = new DataApi.DataListener() {
@Override
public void onDataChanged(DataEventBuffer dataEvents) {
Log.d(TAG, "onDataChanged");
for (DataEvent event : dataEvents) {
Log.d(TAG, "dataEvent.uri: " + event.getDataItem().getUri().toString());
DataMap item = DataMapItem.fromDataItem(event.getDataItem()).getDataMap();
/////other code to set data/////
}
updateCanvas();
}
};