android中的Handler和Callback機制

來源:互聯網
上載者:User

http://alex-yang-xiansoftware-com.iteye.com/blog/850865

Handler主要用來線上程之間的通訊的機制。如在Activity或Service中需要接受其他線程的訊息,則在需要接收訊息的Activity或Service中需要實現Handler.Callback介面,實現這個介面的:

Java代碼  
  1. public boolean handleMessage( Message inMessage ) ;  

 

方法。然後在建立Handler的地方將實現了Callback的類的執行個體傳入:

Java代碼  
  1. Looper  looper = inContext.getMainLooper();  
  2. mThread = looper.getThread();  
  3. mHandler = new Handler( looper , mCallback );  

 

或者:

Java代碼  
  1. mHandler = new Handler( mCallback )  

 

然後當線上程中可使用如下代碼向Acitity或Service發送訊息:

Java代碼  
  1. //inToken 是一個Object對象,可以傳入其他的參數  
  2. mHandler.obtainMessage( inWhat , inA , inB , inToken )  
  3. mHandler.sendMessage( inMessage )  

 

 或

Java代碼  
  1. mHandler.sendEmptyMessage( inWhat )  

 

當執上面的代碼之後,建立這個Handler時使用Callback執行個體的handleMessage將會被調用。

 

可以使用如下代碼將一個線程執行個體放入到Handler中使其執行:

Java代碼  
  1. mHandler.post( inRunnable );   

 

可使用如下代碼刪除這個線程:

Java代碼  
  1.  mHandler.removeCallbacks( inRunnable );   

 Handler上還有許多類似的發送訊息或添加線程的方法。增加了一些其他的特徵

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.