该应用正在从蓝牙获取数据并绘制实时图形。
但是,图经常会出现不连续性。
数据源是蓝牙模块(单独的线程),它无法将所有数据发送到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();
}
提前谢谢!
答案 0 :(得分:1)
不幸的是,您没有提供任何配置SciChartSurface或其部分的代码(例如,填充数据系列的代码),因此我不确定100%为什么在应用程序中出现不连续性。
这可能是由于图表更新过多或在更新期间分配了太多对象所致。在这种情况下,当Android OS暂停VM执行GC时,您的应用程序中可能会出现微死机,这可能会导致您所描述的不连续性。无论如何,我建议您从对应用程序进行性能分析开始,以查找CPU或内存使用量是否出现峰值。我也建议看一下this answer,其中包含一些有关如何改善图表性能的建议。
我也建议您看一下Audio Analyzer上的SciChart Showcase application演示,该演示演示了如何显示来自麦克风的实时数据。希望这个例子对您有帮助。