android中的Handler和Callback機制

android中的Handler和Callback機制 - - ITeye技術網站javascript

Handler主要用來在線程之間的通訊的機制。如在Activity或Service中須要接受其餘線程的消息,則在須要接收消息的Activity或Service中須要實現Handler.Callback接口,實現這個接口的:java

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

 

方法。而後在建立Handler的地方將實現了Callback的類的實例傳入:android

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

 

或者:app

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

 

而後當在線程中可以使用以下代碼向Acitity或Service發送消息:oop

Java代碼   收藏代碼
  1. //inToken 是一個Object對象,能夠傳入其餘的參數  
  2. mHandler.obtainMessage( inWhat , inA , inB , inToken )  
  3. mHandler.sendMessage( inMessage )  
//inToken 是一個Object對象,能夠傳入其餘的參數
mHandler.obtainMessage( inWhat , inA , inB , inToken )
mHandler.sendMessage( inMessage )

 

 或post

Java代碼   收藏代碼
  1. mHandler.sendEmptyMessage( inWhat )  
mHandler.sendEmptyMessage( inWhat )

 

當執上面的代碼以後,建立這個Handler時使用Callback實例的handleMessage將會被調用。網站

 

能夠使用以下代碼將一個線程實例放入到Handler中使其執行:spa

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

 

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

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

 Handler上還有許多相似的發送消息或添加線程的方法。增長了一些其餘的特徵對象

相關文章
相關標籤/搜索