android-studio - 在 MPAndroid 折线图中显示数据
问题描述
我目前正在从蓝牙读取 7 个传感器的数据,并在图表中用 7 条线显示它们。我设法让应用程序正常工作,对于每个传入的数据,我实现了下面的 addEntry 函数来更新图表并沿 x 轴移动窗口以显示最新的数据。
但是,数据传输是 100Hz,应用程序会运行一个多小时,我发现应用程序在运行一段时间后,比如 20 分钟后,有时会卡住,有时可能无法处理。鉴于要处理的数据量很大,我想只在图表中保留 10-15 秒的数据(即即使我滚动回图表的开头,它也只会显示 10-15 秒的数据)。经过一番研究,我刚刚找到了
mChart.getData().notifyDataChanged();
更新数据的方法,这不允许我只显示数组列表的选定部分。有什么建议吗?
提前致谢。
private void addEntry(){
Log.d(TAG, "add Entry called");
LineDataSet[] sensorSet = new LineDataSet[7];;
if (mChart.getData() != null && mChart.getData().getDataSetCount() > 0){
for (int k = 0; k<7; k++) {
sensorSet[k] = (LineDataSet) mChart.getData().getDataSetByIndex(k);
sensorSet[k].setValues(SensorData.getSensor()[k]);
}
mChart.getData().notifyDataChanged();
Log.d(TAG, "notified");
mChart.notifyDataSetChanged();
mChart.setVisibleXRange(0,5000);
int temp = mChart.getData().getEntryCount();
Log.d(TAG, "Entry count: " + mChart.getData().getEntryCount());
mChart.moveViewToX(mChart.getLineData().getXMax()-1000);
}else{
for (int k = 0; k<7; k++) {
sensorSet[k] = createSet(k);
}
LineData data = new LineData(sensorSet);
mChart.setData(data);
}
}
解决方案
推荐阅读
- javascript - 如何使用 ReactJS 使多个选择框动态化
- javascript - 如何在不有效破坏单词的情况下将句子分成固定长度的块?
- php - 如何在laravel中打印分页内容的所有页面?
- google-cloud-platform - bq 数据集中有更多表会减慢进程吗?
- python - 但是当我运行这个程序时,我得到一个这样的错误:“PermissionError: [Errno 13] Permission denied: 'test1.txt'”
- python - 使用python从收集的站点数据中查找特定字符串并打印
- go - 我们如何将 gcc-go 安装到 AIX 机器 power-pc-7 bigendian 64 位?
- xampp - xampp 无法在 localhost(127.0.0.1) 上运行,但可以在 (192.168.XX) 上运行
- javascript - 如何从多步列表中选择值
- python - Python3 中的 java TreeMap 类比