Android invalidate and postinvalidate are used to refresh the interface, the difference is:
1) Invalidate (): Instantiate a Handler object and override the Handlemessage method call invalidate () to implement the interface refresh, while the thread updates the message through the SendMessage send interface.
//to open a thread in OnCreate ()NewThread (NewGamethread ()). Start ();//instantiate a handlerHandler MyHandler =NewHandler () {//processing after receiving a message Public voidhandlemessage (Message msg) {Switch(msg.what) { CaseActivity01.REFRESH:mGameView.invalidate ();//Refresh Interface Break; }Super. Handlemessage (msg); }};classGamethreadImplementsRunnable { Public voidrun () { while(!Thread.CurrentThread (). isinterrupted ()) {Message Message=NewMessage (); Message.what=Activity01.refresh; //Send MessageActivity01. This. Myhandler.sendmessage (message); Try{Thread.Sleep (100); } Catch(interruptedexception e) {thread.currentthread (). interrupt (); } }}}
2) Use Postinvalidate is relatively simple, do not need to handler, directly in the thread call Postinvalidate can
class Implements Runnable { publicvoid run () { while (! Thread.CurrentThread (). isinterrupted ()) { try {thread.sleep (+catch
(interruptedexception e) {thread.currentthread (). interrupt (); } // use Postinvalidate to update the interface Mgameview.postinvalidate () directly in the thread ; }}}
Android Interface Refresh