1.Handler介紹
Handler 是一個訊息分發物件,handler是Android給我們提供用來更新UI的一套機制,也是一套訊息處理機制,通過它可以實作在不同執行緒之間傳遞訊息
本章Handler類要用到的方法有:
void handleMessage(Message msg); //需要重寫的方法,用來處理接收的訊息,只有當接收到發送者發來的訊息,才會回呼該方法 Message obtainMessage(); //獲取一個訊息物件 boolean sendMessage(Message msg); //發送訊息物件,發送成功的話,就會回呼handleMessage()方法
2.MainActivity.java如下所示:
package com.example.tcpdemo; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { MyThread mt; //定義一個handler public Handler mHandler = new Handler() { public void handleMessage(Message msg) { //列印發送者發來的訊息 System.out.println("main what:"+msg.what); System.out.println("main obj:"+msg.obj.toString()); System.out.println("main arg1:"+msg.arg1); }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mt = new MyThread(); mt.setHandler(mHandler); //設定handler mt.start(); //啟動執行緒 } }
3.MyThread.java如下所示:
package com.example.tcpdemo; import android.os.Handler; import android.os.Message; public class MyThread extends Thread { public Handler mHandler=null; //獲取另一個執行緒的Handler public void setHandler( Handler handler){ mHandler = handler; } public void run(){ try { //讓執行緒睡眠3s, Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } Message msg = mHandler.obtainMessage(); //設定發送的內容 msg.arg1 = 1; msg.what = 3; msg.obj = "this is MyThread"; mHandler.sendMessage(msg); } }
運行列印:

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/34301.html
標籤:Android
