Ich arbeite an einer Android-Anwendung, die die Herzfrequenz mit einem Liniendiagramm darstellt. Ich empfange alle 65 Millisekunden ein Datenpaket über UDP-Broadcast, das ich plotten muss. Das Graph Rendering ist in den ersten 2-3 Minuten sehr flüssig und danach wird es langsamer. Könnte mir jemand helfen herauszufinden, was es im Laufe der Zeit langsam macht? Wie kann man beim Zeichnen großer Datenmengen den Speicher freigeben?Plotten langsam im Laufe der Zeit-Android, wie der Speicher zu befreien, wenn eine Echtzeit-Daten mit MPAndroidChart Liniendiagramm plotten?
private void addEntryGraph01(int ch0[], LineChart chart) {
LineData data = chart.getLineData();
if (data != null) {
ILineDataSet set = data.getDataSetByIndex(0);
if (set == null) {
set = createSet();
data.addDataSet(set);
}
data.addXValue("");
for (int i = 0; i < ch0.length; i++)
data.addEntry(new Entry((float) (ch0[i]), set.getEntryCount()), 0);
chart.notifyDataSetChanged();
chart.setVisibleXRange(50, 50);
chart.moveViewToX(data.getXValCount() - 10);
return;
}
}
private LineDataSet createSet() {
LineDataSet set = new LineDataSet(null, "");
set.setDrawCubic(true);
set.setDrawValues(false);
set.setCubicIntensity(0.1f);
set.setAxisDependency(YAxis.AxisDependency.LEFT);
set.setColor(ColorTemplate.getHoloBlue());
set.setCircleColor(ColorTemplate.getHoloBlue());
set.setLineWidth(1f);
set.setDrawCircles(false);
set.setFillAlpha(65);
set.setFillColor(ColorTemplate.getHoloBlue());
set.setHighLightColor(Color.rgb(244, 117, 177));
set.setValueTextColor(Color.WHITE);
set.setValueTextSize(10f);
return set;
}
Leider unterstützt MPAndroidChart keine große Datenmenge. Also wähle ich eine andere Plotbibliothek. – somia