Я пытаюсь отобразить график (с датами в виде меток X) с помощью библиотеки GraphView в приложении для Android.Когда я пробовал библиотеку, я подделал массив точек данных, и он работал нормально.Однако, когда я попытался использовать свои собственные данные, переданные в функцию, хотя я сделал окончательный размер массивов и все значения выглядели правильно и действительными в отладчике, logcat продолжал говорить мне
Background sticky concurrent mark sweep GC freed 662839(10MB) AllocSpace objects
и приложение просто зависает.Размер моих массивов данных составляет всего 4, даже меньше, чем фальшивые данные, которые я использовал, поэтому мне действительно интересно, откуда эта проблема.
Вот функция для отображения графика:
private void displayGraph(ArrayList<String> graphData) throws ParseException {
final int numDate = graphData.size() / 2;
DataPoint[] allDataPoints = new DataPoint[numDate];
ArrayList<Date> allDates = new ArrayList<Date>(numDate);
ArrayList<Integer> allData = new ArrayList<Integer>(numDate);
ArrayList<Date> noDates = new ArrayList<Date>();
ArrayList<Integer> noData = new ArrayList<Integer>();
int numNoDates = 0;
SimpleDateFormat formatter = new SimpleDateFormat("MMM DD, yyyy");
// parse the dates and distinguish those "didn't"
for (int i = 0; i < numDate; i++) {
String sDate = graphData.get(i * 2);
Date date = formatter.parse(sDate);
allDates.add(date);
String sdata = graphData.get(i * 2 + 1);
String[] data = sdata.split(" ");
allData.add(Integer.parseInt(data[2]));
allDataPoints[i] = new DataPoint(date, Integer.parseInt(data[2]));
if (!data[3].equals("did")) {
noDates.add(date);
noData.add(Integer.parseInt(data[2]));
numNoDates++;
}
}
DataPoint[] noDataPoints = new DataPoint[numNoDates];
for (int i = 0; i < numNoDates; i++) {
noDataPoints[i] = new DataPoint(noDates.get(i), noData.get(i));
}
LineGraphSeries<DataPoint> line = new LineGraphSeries<DataPoint>(allDataPoints);
line.setColor(Color.WHITE);
graph.addSeries(line);
}
Стилизация графика здесь исключена (я почти уверен, что они работают нормально, и программа зависла до того, как она туда попала).Я пробовал много способов обойти это и иметь различные структуры данных для хранения данных, но даже создание вручную> 1 DataPoints из моих массивов данных ArrayLists в конструкторе серии вызывает ту же проблему.
Если кто-нибудь знает, в чем может быть проблема и как я могу ее решить, я был бы очень благодарен!Спасибо!