2015-11-12 35 views
1

我遇到了一个问题,即通过更新数据并调用mMyChart.invalidate()来实时刷新LineDataSet图形。如何在MPAndroidChart中绘制图形完成时收到回调?

一个线程向服务器请求数据,处理数据并通过消息将其发送给第二个线程,第二个线程是主要活动线程并负责绘制图形。

问题是这个调用无效似乎在图表实际重绘之前完成,所以我的其他线程请求数据将关闭并请求更多数据并将其发送到线程以重绘图表。绘制图表的线程经过一段时间后会变得非常落后,并且开始花费很长时间来响应任何事情,它运行的时间越长,需要的时间越长。

我的问题是直截了当的,因为我想让它不会继续请求数据,直到绘图完成。完成绘图时如何收到回调?或者,有没有办法检测它的绘制时间?

感谢,

埃里克

回答

1

你可以尝试ViewTreeObserver(相关SO质疑here

视图树观察者用于注册,可告知在全球变化监听器视图树。这样的全局事件包括但不限于整个树的布局,绘制阶段的开始,触摸模式改变......应用程序决不应该由视图层次结构提供的应用程序实例化一个。ViewTreeObserver。有关更多信息,请参阅getViewTreeObserver()

或者你可以尝试扩展您所使用的特定Chart类型和覆盖onDraw(Canvas canvas)抽奖通完成时调用的监听器:

public class ExtendedBarChart extends BarChart { 
    public ExtendedBarChart(Context context) { 
     super(context); 
    } 

    public ExtendedBarChart(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public ExtendedBarChart(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     // TODO: Drawing completed, execute callback... 
    } 
} 
+0

谢谢你,我会试试这个。 – viking79

相关问题