Chinaunix首页 | 论坛 | 博客
  • 博客访问: 176479
  • 博文数量: 43
  • 博客积分: 1428
  • 博客等级: 上尉
  • 技术积分: 410
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-02 09:33
文章分类

全部博文(43)

文章存档

2014年(3)

2013年(3)

2011年(1)

2010年(36)

分类: Java

2013-11-07 11:33:33




在需要处理消息队列时,如果使用同一线程有时候会导致主线程阻塞,而很多情况下主线程不允许阻塞,那么我们可以使用HandlerThread创建一个线程来处理消息而不去使用主线程,HandlerThread继承于Thread,它本质就是个Thread。它比Thread多一个Looper成员变量。这个Looper是对消息队列以及队列处理逻辑的封装。如下实例:



public class mActivity extends Activity{
       @Override
       protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.mactivity);
          mThread = new HandlerThread("mmThread");    //创建一个名为mmThread得HandlerThread
          mThread.start();
              mHandler = new MyHandler(mThread.getLooper());  //设置Handler消息使用mThread线程来处理     
          }
      }     

       private class MyHandler extends Handler{             
              public MyHandler(Looper looper){
                     super(looper);
              }

              @Override
              public void handleMessage(Message msg) {//处理Handler消息
                     Log.d("收到的消息是:",msg.obj.toString());
              }            
       }
}

阅读(1827) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~