SciChart图不连续性

时间:2018-12-16 10:31:53

标签: android multithreading scichart

该应用正在从蓝牙获取数据并绘制实时图形。

但是,图经常会出现不连续性。

数据源是蓝牙模块(单独的线程),它无法将所有数据发送到SciChart lib。坦白说,当我在蓝牙线程中插入Log.d()行以打印数据时,一切开始神奇地正常工作。

我怀疑蓝牙线程未按时执行。

这是我在DataManager.java文件中修改的Scichart的一部分代码。

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();
}

提前谢谢!

1 个答案:

答案 0 :(得分:1)

不幸的是,您没有提供任何配置SciChartSurface或其部分的代码(例如,填充数据系列的代码),因此我不确定100%为什么在应用程序中出现不连续性。

这可能是由于图表更新过多或在更新期间分配了太多对象所致。在这种情况下,当Android OS暂停VM执行GC时,您的应用程序中可能会出现微死机,这可能会导致您所描述的不连续性。无论如何,我建议您从对应用程序进行性能分析开始,以查找CPU或内存使用量是否出现峰值。我也建议看一下this answer,其中包含一些有关如何改善图表性能的建议。

我也建议您看一下Audio Analyzer上的SciChart Showcase application演示,该演示演示了如何显示来自麦克风的实时数据。希望这个例子对您有帮助。