GraphView читает данные из массива, вызывая зависание приложения - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь отобразить график (с датами в виде меток 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 в конструкторе серии вызывает ту же проблему.

Если кто-нибудь знает, в чем может быть проблема и как я могу ее решить, я был бы очень благодарен!Спасибо!

...