SciChart График разрыва

1

Приложение получает данные с Bluetooth и рисует график в реальном времени.

Однако граф часто получает разрывы.

Источник данных - модуль Bluetooth (отдельный поток), и он не может отправить все данные в библиотеку SciChart. Честно говоря, когда я вставляю Log.d() в поток bluetooth для печати данных, все начинает работать волшебным образом.

Я подозреваю, что поток Bluetooth не выполняется вовремя.

Вот некоторый код, который является частью Scichart, модифицированного мной в файле DataManager.java.

public void setSensingData(PBSensorData pbSensorData) {

        try {
            sensorDataQueueBlocking.put(pbSensorData);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        // This is the magic line. When the line is here, things work fine
        Log.d("DataManager", "put: " + (System.currentTimeMillis() - startTime) + " (ms)" ); 
        startTime = System.currentTimeMillis();
}

Заранее спасибо!

Теги:
multithreading
scichart

1 ответ

1

К сожалению, вы не предоставили код, который настраивает SciChartSurface или его части (например, код, заполняющий ряды данных), поэтому я не уверен на 100%, почему вы получаете разрывы в своем приложении.

Это может быть вызвано слишком частыми обновлениями диаграммы или, возможно, вы выделяете слишком много объектов во время обновлений. В этом случае вы можете получить микро-зависания в вашем приложении, когда ОС Android приостанавливает работу виртуальной машины, чтобы выполнить GC, что потенциально может привести к разрывам, которые вы описали. В любом случае я бы посоветовал начать с профилирования вашего приложения, чтобы выяснить, есть ли скачки в использовании процессора или памяти. Также я бы посоветовал взглянуть на этот ответ, в котором содержатся некоторые предложения по улучшению производительности диаграммы.

Также я бы посоветовал вам взглянуть на демонстрацию Audio Analyzer из приложения SciChart Showcase, которая показывает, как отображать данные в реальном времени с микрофона. Надеюсь, что этот пример поможет вам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню