Android Looper和Handler分析(6)

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

                causeMsg = cause.toString(); 
            } 
            return causeMsg; 
        } 
    } 

Cpp代码
//Looper类分析 
//没找到合适的分析代码的办法,只能这么来了。每个重要行的上面都会加上注释 
//功能方面的代码会在代码前加上一段分析 
public class Looper { 
   //static变量,判断是否打印调试信息。 
    private static final boolean DEBUG = false; 
    private static final boolean localLOGV = DEBUG ? Config.LOGD : Config.LOGV; 
 
    // sThreadLocal.get() will return null unless you've called prepare(). 
//线程本地存储功能的封装,TLS,thread local storage,什么意思呢?因为存储要么在栈上,例如函数内定义的内部变量。要么在堆上,例如new或者malloc出来的东西 
//但是现在的系统比如Linux和windows都提供了线程本地存储空间,也就是这个存储空间是和线程相关的,一个线程内有一个内部存储空间,这样的话我把线程相关的东西就存储到 
//这个线程的TLS中,就不用放在堆上而进行同步操作了。 
    private static final ThreadLocal sThreadLocal = new ThreadLocal(); 
//消息队列,MessageQueue,看名字就知道是个queue.. 
    final MessageQueue mQueue; 
    volatile boolean mRun; 
//和本looper相关的那个线程,初始化为null 
    Thread mThread; 
    private Printer mLogging = null; 
//static变量,代表一个UI Process(也可能是service吧,这里默认就是UI)的主线程 
    private static Looper mMainLooper = null; 
     
     /** Initialize the current thread as a looper.
      * This gives you a chance to create handlers that then reference
      * this looper, before actually starting the loop. Be sure to call
      * {@link #loop()} after calling this method, and end it by calling
      * {@link #quit()}.
      */ 
//往TLS中设上这个Looper对象的,如果这个线程已经设过了looper的话就会报错 
//这说明,一个线程只能设一个looper 
    public static final void prepare() { 
        if (sThreadLocal.get() != null) { 
            throw new RuntimeException("Only one Looper may be created per thread"); 
        } 
        sThreadLocal.set(new Looper()); 
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • 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