Android Looper和Handler分析(15)

来源:未知 责任编辑:责任编辑 发表时间:2014-04-20 03:36 点击:

        } 
        else { 
            RuntimeException e = new RuntimeException( 
                this + " sendMessageAtTime() called with no mQueue"); 
            Log.w("Looper", e.getMessage(), e); 
        } 
        return sent; 
    } 
//还记得looper中的那个消息循环处理吗 
//从消息队列中得到一个消息后,会调用它的target的dispatchMesage函数 
//message的target已经设置为handler了,所以 
//最后会转到handler的msg处理上来 
//这里有个处理流程的问题 
public void dispatchMessage(Message msg) { 
//如果msg本身设置了callback,则直接交给这个callback处理了 
        if (msg.callback != null) { 
            handleCallback(msg); 
        } else { 
//如果该handler的callback有的话,则交给这个callback处理了---相当于集中处理 
          if (mCallback != null) { 
                if (mCallback.handleMessage(msg)) { 
                    return; 
                } 
           } 
//否则交给派生处理,基类默认处理是什么都不干 
            handleMessage(msg); 
        } 
    } 
.......... 

 
 讲了这么多,该怎么创建和使用一个带消息循环的线程呢?
 
view plaincopy to clipboardprint?
//假设在onCreate中创建一个线程  
//不花时间考虑代码的完整和严谨性了,以讲述原理为主。  
.... 
 
... onCreate(...){ 
 
//难点是如何把android中的looper和java的thread弄到一起去。  
//而且还要把随时取得这个looper用来创建handler  
//最简单的办法就是从Thread派生一个  
class ThreadWithMessageHandle extends Thread{ 
  //重载run函数  
  Looper myLooper = null; 
  run(){ 
  Looper.prepare();//将Looper设置到这个线程中  
  myLooper = Looper.myLooper(); 
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Android 完全退出程序
  • 原创:Android应用开发-Andorid歌词秀,含源码
  • android 屏幕保护
  • Android手机软件汉化教程---第四课 dex文件汉化
  • 众多Android 开源项目推荐,给力工作给力学习
  • Android Audio代码分析4
  • Android得到已安装的应用程序信息!
  • Android开发者指南(29) —— USB Host and Accessory
  • Android成长的幕后推手:工程师鲁宾
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1