requestLayout:
從方法名字可以知道,“請求布局”,那就是說,如果調用了這個方法,那么對於一個子View來說,應該會重新進行布局流程。但是,真實情況略有不同,如果子View調用了這個方法,其實會從View樹重新進行一次測量、布局、繪制這三個流程,最終就會顯示子View的最終情況。
invalidate:
當子View調用了invalidate方法后,會為該View添加一個標記位,同時不斷向父容器請求刷新,父容器通過計算得出自身需要重繪的區域,直到傳遞到ViewRootImpl中,最終觸發performTraversals方法,進行開始View樹重繪流程(只繪制需要重繪的視圖)。
postInvalidate:
postInvalidate是在非UI線程中調用,invalidate則是在UI線程中調用。
詳細講解見:http://blog.csdn.net/a553181867/article/details/51583060