import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Looper;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class Test2Activity extends Activity {private Handler handler1, handler;private TextView tv2;private Button btn2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.test2);tv2 = (TextView) findViewById(R.id.tv2);btn2 = (Button) findViewById(R.id.btn2);btn2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {Thread1 thread1 = new Thread1();thread1.start();Thread2 thread2 = new Thread2();thread2.start();}});handler = new Handler(){@Overridepublic void handleMessage(Message msg) {tv2.setText(msg.getData().getString("str"));}};}class Thread1 extends Thread{@Overridepublic void run() {Looper.prepare();handler1 = new Handler(){@Overridepublic void handleMessage(Message msg) {String str = msg.getData().getString("str");Message msg1 = new Message();Bundle b = new Bundle();b.putString("str", str);msg1.setData(b);handler.sendMessage(msg1);try {Thread.sleep(3000);Message msg3 = new Message();Bundle b1 = new Bundle();b1.putString("str", str+"------by thread1");msg3.setData(b1);handler.sendMessageDelayed(msg3, 1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}};Looper.loop();}}class Thread2 extends Thread{@Overridepublic void run() {Message msg2 = new Message();Bundle b = new Bundle();b.putString("str", "from thread2");msg2.setData(b);handler1.sendMessage(msg2);}}}
所謂的Handle-Message機制,與其說是某種複雜的訊息處理機制,不如把它看成送快遞的。打了收件者(target)標記的快遞(message)被扔到一台不停旋轉的傳送帶(Looper)上,系統每取出一個快遞,就根據上面標籤的內容把它發配到對應的收件者那去,收件者再根據標籤上標註的簽名(what)來分別處理不同的快遞。(這句話摘自別人)