limccn / Android-Charts

Open-source native Android graph/chart framework includes line chart,stick chart,candlestick chart,pie chart,spider-web chart etc.
http://www.lidaren.com/androidcharts
Apache License 2.0
818 stars 320 forks source link

关于实时K线图的绘制 #1

Open yangningbo opened 10 years ago

yangningbo commented 10 years ago

请教怎么使用使用MACandleStickChart控件实时绘制K线图呢?我遇到的问题是后来绘制的K线会叠加在之前绘制的K线之上。

limccn commented 10 years ago

我们知道Android的View的更新是强制在UI线程中进行的,而实时获取数据和处理数据的过程一般会放在子线程中进行。考虑到线程安全性和UI线程的负载,Android-Charts的UI更新需要使用手动方式实现。

在调用完setStickData或setLinesData后,如果你在UI线程中更新chart请使用invalidate进行更新,子线程中更新请使用postInvalidate进行更新。如果你能确定你使用哪种方式更新,请直接修改setStickData或setLinesData的代码即可。

另外,Android-Charts中数据对象的setter使用的是引用赋值而非对象copy,在UI线程和子线程中同时操作数据对象都是可以的。可以在子线程设置和修改数据,UI线程读取并更新chart。考虑到ArrayList是线程不安全的,如果有复杂的线程操作要求,可以考虑加上synchronized关键字强制线程同步