在android中Handler类通常作为不同线程间通信的手段,既可以实现线程的互斥,也可以实现同步。
下面以一个简单的例子来说明如何实现两个线程间的通信。
import android.app.Activity;
import android.os.Bundle; import android.os.Message; import android.util.Log; import android.os.Handler; public class MyHandler extends Activity { static final String TAG = "Handler"; static final int HANDLER_TEST = 1; Handler h = new Handler(){ public void handleMessage (Message msg) { switch(msg.what) { case HANDLER_TEST: Log.d(TAG, "The handler thread id = " + Thread.currentThread().getId() + " "); break; } } }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG, "The main thread id = " + Thread.currentThread().getId() + " "); new myThread().start(); setContentView(R.layout.main) //此处为activity的主线程 } class myThread extends Thread { //新创建的线程,通过Handler.sendMessage(Message msg);实现子线程与主线程间通信 public void run() { Message msg = new Message(); msg.what = HANDLER_TEST; h.sendMessage(msg); Log.d(TAG, "The worker thread id = " + Thread.currentThread().getId() + " "); } } }
通过子线程和主线程间通信实现同步和互斥。