invalidate和postInvalidate的区别及使用

invalidate和postInvalidate都可以实现界面刷新

 

Invalidate不能直接在线程中调用,违背了单线程模型必须在UI线程中调用。 

如果要在子线程中刷新界面,实例化一个Handler对象,并重写handleMessage方法调用invalidate()实现界面刷新;而在线程中通过sendMessage发送界面更新消息。 

postInvalidate()可以线程中被调用使用起来比较简单,不需要handler,直接在线程中调用postInvalidate即可。 

 

区别与联系

invalidate() 方法在 UI 线程中调用,重绘当前 UI。

postInvalidate() 方法在非 UI 线程中调用,通知 UI 线程重绘。 
postInvalidate()中底层实现还是通过Hanlder +invalidate(),只不过被封装起来,因此postInvalidate()可以在子线程中刷新界面

猜你喜欢

转载自blog.csdn.net/github_37130188/article/details/89164798