В настоящее время я разрабатываю приложение, которое, помимо прочего, может записывать датчики смартфонов, такие как ускорение и т. Д., И строить их с помощью библиотеки GraphView. На данный момент я считываю значения датчиков в базу данных SQLite комнаты, а затем с помощью наблюдателя, который наблюдает за таблицей с помощью объекта 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 не реагирует на каждое добавленное измерение, поэтому я пропускаю значения, когда добавляю последнее измерение в серию. Конечно, я мог бы написать код, который проверяет, сколько значений нужно добавлять каждый раз, когда Observer реагирует на изменение LiveData, но это не кажется мне хорошим вариантом с точки зрения производительности. Кто-нибудь может лучше понять, как синхронизировать измерения в базе данных с серией GraphViews?