(轉載) Android兩個子線程之間通訊

來源:互聯網
上載者:User

標籤:looper   data   targe   track   tail   主線程   lis   new   lin   

 Android兩個子線程之間通訊 標籤: classthreadandroid子線程通訊2015-03-20 17:03 3239人閱讀 評論(0) 收藏 舉報 分類:個人雜談

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Android中,相信主線程和子線程之間的通訊大家都不陌生了吧。在一次面試經曆中被問到了兩個子線程之間是如何進行通訊的。哎呦!這可蒙住我了。後來回家研究了下,分享給大家。

其實android中線程通訊無非就是handler和looper的操作。

一般情況下的主線程和子線程之間的通訊,都是通過主線程中的handler把子線程中的message發給主線程中的looper,或者,主線程中的handler通過post向looper中發送一個runnable。looper預設存在於main線程中。那麼子線程中沒有Looper,該怎麼辦呢?很簡單,我們可以把looper綁定到子線程中,並且建立一個handler。在另一個線程中通過這個handler發送訊息,就可以實現子線程之間的通訊嘍!

 

 

[java] view plain copy
  1. public class Thread1 extends Thread{  
  2.         private Handler handler1;  
  3.         public Handler getHandler(){//注意哦,在run執行之前,返回的是null  
  4.             return handler1;  
  5.         }  
  6.         @Override  
  7.         public void run() {  
  8.               
  9.             Looper.prepare();  
  10.             handler1 = new Handler(){  
  11.                 public void handleMessage(android.os.Message msg) {  
  12.                     //這裡處理訊息  
  13.                     Log.i("MThread", "收到訊息了:"+Thread.currentThread().getName()+"----"+msg.obj);  
  14.                 };  
  15.             };  
  16.             Looper.loop();  
  17.               
  18.         }  
  19.               
  20.     }  

[java] view plain copy
  1. public class Thread2 extends Thread{  
  2.         @Override  
  3.         public void run() {  
  4.               
  5.             for(int i=0; i<10; i++){  
  6.                 Message msg = Message.obtain();  
  7.                 msg.what = 1;  
  8.                 msg.obj = System.currentTimeMillis()+"";  
  9.                 handler1.sendMessage(msg);  
  10.                 Log.i("MThread", Thread.currentThread().getName()+"----發送了訊息!"+msg.obj);  
  11.                 SystemClock.sleep(1000);  
  12.             }  
  13.               
  14.         }  
  15.     }  

 

 

執行效果:

 

完整代碼下載請見:

http://download.csdn.net/detail/kedaweiwei/8518701

(轉載) Android兩個子線程之間通訊

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.