Android学习笔记(5)——浅谈Handler(3)
来源:未知 责任编辑:责任编辑 发表时间:2013-12-01 14:19 点击:次
Looper类有能够循环地从消息队列中取得消息的功能,我们可以在一个线程中使用Looper,这样,该线程就可以循环的在消息队列里取得消息,知道消息队列为空为止。但我们一般不直接创建和使用Looper,在Android提供的HandlerThread类中,就实现了Looper的功能,所以我们只要使用HandlerThread这个类就可以了,我们用HandlerThread的对象调用getLooper()来得到该线程的Looper对象。
我们来看下面这个例子
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 HandlerDemo2Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
System.out.println("Activity---->"+Thread.currentThread().getName());
HandlerThread handlerThread = new HandlerThread("HandlerThread");//创建一个HandlerThread对象,它是一个线程
handlerThread.start();//启动线程
MyHandler myHandler = new MyHandler(handlerThread.getLooper());//创建一个MyHandler对象,该对象继承了Handler,从下面的MyHandler类中可以看到,调用的是Handler父类的Handler(Looper looper)的构造函数,而这里传进去的Looper对象是从HandlerThread中取得的。
Message msg = myHandler.obtainMessage();//获得消息对象
msg.sendToTarget();//把得到的消息对象发送给生成该消息的Handler,即myHandler,当myHandler接收到消息后,就会调用其handleMessage的方法来处理消息
}
class MyHandler extends Handler{
public MyHandler() {//构造函数
// TODO Auto-generated constructor stub
}
public MyHandler(Looper looper){//构造函数
super(looper);//实现了父类的该构造函数
}
@Override
public void handleMessage(Message msg) {//当这个Handler接收到Message对象的时候,会自动调用这个方法,来对Message对象进行处理
// TODO Auto-generated method stub
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>