Я сейчас читаю данные с 7 датчиков по bluetooth и отображаю их 7 строками на графике. Мне удалось заставить приложение работать, для каждого поступающего данных я реализую функцию addEntry ниже, чтобы обновить диаграмму и перемещать окно по оси x, чтобы показать самые обновленные данные.
Однако передача данных осуществляется на частоте 100 Гц, и приложение будет работать более часа, я обнаружил, что приложение зависает и может не справиться с этим иногда после запуска приложения в течение определенного периода времени. , скажем 20 минут. Учитывая большой объем данных, с которыми нужно иметь дело, я хотел бы просто хранить данные в течение 10-15 секунд на диаграмме (т.е. даже если я прокручиваю назад к началу диаграммы, она просто показывает данные за 10-15 секунд). После некоторого исследования я просто нашел способ mChart.getData().notifyDataChanged();
для обновления данных, который не позволяет мне просто отображать выбранную часть arrayylist. Могли бы какие-нибудь советы?
Заранее спасибо.
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);
}
}