Thread、Handler、Looper以及Message

來源:互聯網
上載者:User
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)來分別處理不同的快遞。(這句話摘自別人)

聯繫我們

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