Handler的介绍及实例

Handler类的介绍
主要作用:处理大量数据的功能放在单独一个类中
1.Handler的基本使用
  Handler在使用过程中涉及到两个队列
  1)线程队列
   注意的方法:
   a./**调用post方法,将线程对象加入到消息队列中*/
      handler.post(thread);
   b./**从线程队列中清除此线程对象*/
      handler.removeCallbacks(thread);
   c./**调用postDelayed方法,将线程对象延时加入到消息队列中*/
      handler.postDelayed(thread, 2000);
  2)消息队列
    /**将msg对象加入到消息队列当中*/
    handler.sendMessage(msg);
2.Handler与线程的关系
   1)利用handler的话直接调用run方法
        执行的是同一个线程,实现方法是handler.post(r);
   2)利用start方法开启
        执行是不同线程,实现方法必须调用start()方法开启
   3)利用handler来实现线程的异步操作
        用到一个重要的类叫looper:循环的从队列中取得消息的功能
    实现异步的步骤:
        a. 先生成一个HandlerThread对象,启动start()方法
       /**生成一个HandlerThread对象,实现了使用looper对象来处理消息队列的功能*/
           HandlerThread handlerThread = new HandlerThread("handler Thread");
           handlerThread.start();
    b.开启start()方法
       handlerThread.start();
    c.创建一个handler,此时的handler从handlerThread得到的参数looper
       MyHandler handler = new MyHandler(handlerThread.getLooper());
3.Bundle只能以String为键,值为其他基本数据类型的特殊Map
   在handler中传递消息时会使用的类型:
   1)当传递小量数据
       msg.arg1  int 类型
       msg.arg2  int 类型
       msg.obj    引用数据类型
   2)当传递大量数据使用Bundle对象
       绑定数据时候使用msg.setData(b)
       取数据时候使用msg.getData()
       

posted @ 2012-06-18 19:26  任智康  阅读(407)  评论(0编辑  收藏  举报