1:Invalidate()方法不能放在线程中,所以需要把Invalidate()方法放在Handler中。在MyThread中只需要在规定时间内发送一个Message给handler,当Handler接收到消息就调用Invalidate()方法。
2:postInvalidate()方法就可以放在线程中做处理,就不需要Handler。
Invalidate()方法在SDK中是这样描述的:Invalidate the whole view. If the view is visible, onDraw(Canvas) will be called at some point in the future. This must be called from a UI thread. To call from a non-UI thread, call postInvalidate(). 当Invalidate()被调用的时候,View的OnDraw()就会被调用,Invalidate()必须是在UI线程中被调用,如果在新线程中更新视图的就调用postInvalidate()。简言之,如果确定是在main thread中调用调用话, 使用 invaludate(),否则要调用 postInvalidate()。
3:横竖屏切换使用重新构造 activity的。所以一定会重新刷新view 。