android之線程的使用(handler,messageQueue)

Handler允許你去處理和一個線程的消息隊列相關聯的Message和Runnable對象。
每一個Handler只和一個單獨的線程以及那個線程的消息隊列相關聯。
當你創建一個Handler時,它被綁定到正在創建他的線程的消息隊列和線程上面,
從這一點看,它傳遞消息消息和runnable到消息隊列,並且執行他們當他們從
消息隊列中出來時。
handler主要有兩方面的用途:
1):調度消息和Runnable的執行。
2):確保一個動作在一個線程中必定會得到執行。


調度消息主要是用,post(Runnable r),postAtTime(Runnable r,Long l),
postDelayed(Runnable,Long),sendEmptyMessage(int),sendMessage(Message);
sendMessageAtTime(Message,long),還用sendMessageDelayed(Message,long).
post版本的發送方法:確保runnable在消息隊列收到後會得到執行。
sendMessage版本的方法:可以攜帶一個bundle存儲的信息由handleMessage()
處理。前提是你必須先要實現一個handler的子類並且實現handlemessage方法。




下面是使用handler的方法:
MyHandler extends Handler {         
public MyHandler(Looper looper) { 
            super(looper); 
        } 
  
        public void handleMessage(Message msg) { 
            /** 處理接收到的消息*/
        } 
    } 
  
   class UpdateRunnable implements Runnable { 
  
        public void run() { 
            Message msg = mHandler.obtainMessage(); 
            msg.what = 10000; 
            msg.sendToTarget(); 
        } 
  
    } 
  
//在需要調用的地方,加入下面代碼即可 
HandlerThread handlerThread = new HandlerThread("MyHandlerThread"); 
handlerThread.start(); 
mHandler = new MyHandler(handlerThread.getLooper()); 
//add to MessageQueue 
mHandler.post(new UpdateRunnable());























發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章