Android GraphView项目通过实时更新获得冻结

时间:2015-05-17 18:31:08

标签: android android-graphview

我正在尝试将BIZ_DATE AMT TRANS_ID PRIOR_TRANS_ID 2015-05-17 159 8086 8085 2015-05-17 159 9088 9087 项目合并到我的应用中,而且我总是遇到一些奇怪的问题。

我的应用需要从实时数据中绘制图表。我有提供数据的所有通信的线程。在主线程中,我正在读取此数据,只需使用Android GraphView,其中counter是int,在每次更新后递增。

不幸的是,它在某些时候冻结了。我已尝试将其放入mSeries1.appendData(new DataPoint(counter,data[0]),true,100);块或将代码行更改为synchronized,但结果仍然相同。

这是应用程序运行期间和冻结时内存的样子:

enter image description here

有没有人知道这里可能有什么问题?

编辑:

这是我目前更新图表视图的方法:

mSeries1.appendData(new DataPoint(counter,counter),true,100);

2 个答案:

答案 0 :(得分:1)

也许已经太晚了,但我遇到了类似的问题,最后我发现当GraphView附加一个新的数据" NaN"冻结。

因此,请检查结果为NaN的情况,例如除以零或类似的情况。

答案 1 :(得分:0)

虽然您没有指定添加点的速率,以及应用程序在没有崩溃的情况下运行多长时间,但您应该预期某些事情会出错(您可能会生成无限数量的点对象,而记忆确实有限。)

您是否需要获得应用从一开始就收到的所有积分?如果没有,你可以实现一种循环缓冲区,它只保留“提供者线程”生成的X最后一个值,并在每次使用方法

接收到新值时更新图形。
your_series.resetData( dataPoint[] my_circular_buffer_of_data_points );

This thread与您的问题非常相似,请看一下!