下面的程序实现了在利用Handler在新线程当中处理消息的方法
Thread java.lang.Thread.currentThread()
public static Thread currentThread ()
Added in API level 1
Returns the Thread of the caller, that is, the current Thread.
Returns
· the current Thread.
android.os.HandlerThread.HandlerThread(String name)
public HandlerThread (String name)
Added in API level 1Message android.os.Handler.obtainMessage()
public final Message obtainMessage ()
Added in API level 1
void android.os.Message.sendToTarget()
public void sendToTarget ()
Added in API level 1
Sends this Message to the Handler specified by getTarget(). Throws a null pointer exception if this field has not been set.
Returns a new Message from the global message pool. More efficient than creating and allocating new instances. The retrieved message has its handler set to this instance (Message.target == this). If you don't want that facility, just call Message.obtain() instead.
重点的几个类
Handler类 HandlerThread类 Thread类 Message类
重点的几个方法
HandlerThread类 :
构造方法 HandlerThread(String name)
启动方法 start()
获取Looper getLooper()
Handler类:
构造方法 Handler(Looper looper)
获取消息对象 obtainMessage(Message msg)
处理消息 handlerMessage(Message msg)
Message类
发送消息 sendToTarget()
package com.example.handlertest; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; import android.os.Message; public class HandlerTest extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //打印了当前线程的id和name System.out.println("Activity------>"+Thread.currentThread().getId()); System.out.println("Activity------>"+Thread.currentThread().getName()); HandlerThread handlerThread = new HandlerThread("hehe"); handlerThread.start(); MyHandler myHandler = new MyHandler(handlerThread.getLooper()); Message msg = myHandler.obtainMessage(); //将msg发送到目标对象,所谓的目标对象,就是生成该msg对象的handler对象 msg.sendToTarget(); } class MyHandler extends Handler{ public MyHandler(){ } //调用了父类的构造函数接收了 looper对象 public MyHandler(Looper looper){ super(looper); } //每当我们想Handler对象发送一个message对象的时候 就会调用这个方法的 public void handlerMessage(Message msg){ System.out.println("handler------->"+Thread.currentThread().getId()); System.out.println("handler------->"+Thread.currentThread().getName()); System.out.println("handlerMessage"); } } }