В настоящее время я занимаюсь разработкой приложения, которое, помимо прочего, может регистрировать сенсоры смартфонов, такие как ускорение и т. Д., И отображать их с помощью библиотеки GraphView. В данный момент я считываю значение датчиков в базу данных Roomitecite, а затем с помощью наблюдателя, который наблюдает за таблицей с помощью объекта LiveData, получает новые измерения и добавляет последнее новое измерение в ряды на графике. Вот как я обновляю График:
sharedViewModel.allAccelerations.observe(viewLifecycleOwner, Observer<List<MeasurementDatabaseHelper.Measurement>> { measurements ->
if (sharedViewModel.isReset.value == true && measurements.isNotEmpty()) {
val time = (measurements.last().time.toDouble() - measurements.first().time.toDouble())*1e-9
val accX = measurements.last().accX.toDouble()
series.appendData(DataPoint(time, accX), true, 50)
}
Моя проблема, однако, в том, что Обозреватель не реагирует на каждое добавленное измерение, так что я пропускаю значения, когда я добавляю последнее измерение в серию. Я, конечно, мог бы написать код, который проверяет, сколько значений нужно добавлять каждый раз, когда Observer реагирует на изменение LiveData, но это не кажется мне хорошим вариантом с точки зрения производительности. Кто-нибудь может иметь лучшую идею, как синхронизировать измерения в базе данных с серией GraphViews?