У меня есть предложение: создать поток для сбора данных датчика и сделать его доступным как объект.Этот поток будет собирать все данные и синхронизироваться с объектом общего значения.Время блокировки будет сведено к минимуму.
collectLocalData = getData();
synchronized(pubData) {
pubData.set(collectLocalData);
}
Ваш поток рендеринга может затем сделать то же самое при копировании общих значений для локального потребления.
synchronized(pubData) {
renderLocalData.set( pubData );
}
renderData( renderLocalData );
Если опрос датчиков занимает больше времени, чем время рендерингаодни и те же данные будут отображаться более одного раза.Анимация может быть немного нервной, но не более, чем то, что представляют данные.
PS: ваши дрожания могут быть результатом самих данных, а не вашего кода.