场景描述:
近期在画股票分时图的过程中,遇到一个问题,用Android的Canvas绘制图形之后,在ViewPager间进行来回切换(切换时有数据请求,数据请求到之后画图形),图形会一时隐藏,一时显示。这种现象让我挺伤神,不过最终经过自己的努力,终于将这个问题解决了,现在将解决这一问题的过程及分析思路加以记录。
分析及解决问题:
1、刚开始怀疑是数据没有获取到,所以图形绘制不出来,然而经过断点调试,发现不是这个问题,数据已经获取完整,并且没有任何异常。
2、接下来怀疑是否数据填充后,需要对界面视图做一次刷新,但问题是,为什么有些时候又可以出来,而有些时候又不能显示出来。
3、接下来怀疑到了多线程交互,当通过子线程将数据获取到之后,马上绘制图形,绘制好图形之后,View很可能不能立马显示,因此这时候就需要刷新,那么用哪个刷新方法呢?用invalidate()显然只适合在主线程中进行视图刷新,而postInvalidate()方法即适合主线程刷新,又适合子线程刷新,因此我在子线程获取到数据之后,将数据通过Canvas画到View上,然后立即用postInvalidate()方法刷新,结果问题解决。