Android GraphView проект заморозить с обновлениями в реальном времени

Я пытаюсь включить Android GraphView проект в мое приложение, и все время у меня есть странные проблемы с ним.

Мое приложение требует рисования графика из данных в реальном времени. У меня есть поток со всеми сообщениями, которые предоставляют данные. В основной теме я читаю эти данные и просто использую mSeries1.appendData(new DataPoint(counter,data[0]),true,100); где counter это int, которое увеличивается после каждого обновления.

К сожалению, в какой-то момент это замерзает. Я пытался положить его в synchronized заблокировать или изменить строку кода на mSeries1.appendData(new DataPoint(counter,counter),true,100); и все же этот самый результат.

Вот как выглядит память во время работы приложения и когда оно зависает:

Кто-нибудь знает, что здесь может быть не так?

РЕДАКТИРОВАТЬ:

Это мой текущий метод обновления моего графика:

public void onEventMainThread(ReadingsUpdateData data) {
        mSeries1.appendData(new DataPoint(counter,data.getData()[0]),true,100);
        counter++;
    }

2 ответа

Может быть, уже слишком поздно, но у меня была похожая проблема, и в конце концов я обнаружил, что при добавлении GraphView новые данные "NaN" замирают.

Поэтому проверьте ситуацию, в которой результатом будет NaN, например, деление на ноль или что-то в этом роде.

Хотя вы не указываете скорость, с которой вы добавляете баллы, и как долго приложение работает без сбоев, вы должны ожидать, что в какой-то момент все пойдет не так (вы потенциально генерируете бесконечное количество точечных объектов, в то время как память действительно ограничен).

Нужно ли иметь все точки, которые приложение получило с самого начала? Если нет, вы можете реализовать своего рода кольцевой буфер, в котором хранятся только последние значения X, сгенерированные вашим "потоком провайдера", и обновлять график каждый раз, когда вы получаете новое значение с помощью метода.

your_series.resetData( dataPoint[] my_circular_buffer_of_data_points );

Эта тема очень похожа на вашу проблему, посмотрите на нее!

Другие вопросы по тегам