Hanler阅读

原创 2017年01月03日 15:31:28

1、首先Looper.prepare()在本线程中保存一个Looper实例,然后该实例中保存一个MessageQueue对象;因为Looper.prepare()在一个线程中只能调用一次,所以MessageQueue在一个线程中只会存在一个。
2、Looper.loop()会让当前线程进入一个无限循环,不端从MessageQueue的实例中读取消息,然后回调msg.target.dispatchMessage(msg)方法。
3、Handler的构造方法,会首先得到当前线程中保存的Looper实例,进而与Looper实例中的MessageQueue想关联。
4、Handler的sendMessage方法,会给msg的target赋值为handler自身,然后加入MessageQueue中。
5、在构造Handler实例时,我们会重写handleMessage方法,也就是msg.target.dispatchMessage(msg)最终调用的方法。
好了,总结完成,大家可能还会问,那么在Activity中,我们并没有显示的调用Looper.prepare()和Looper.loop()方法,为啥Handler可以成功创建呢,这是因为在Activity的启动代码中,已经在当前UI线程调用了Looper.prepare()和Looper.loop()方法。

    Message msg = new Message();
    msg.what = 0;
    handler.sendMessage(msg);

6.可以新建一个new message 也可以Message.obtain()。
注:产生一个Message对象,可以new ,也可以使用Message.obtain()方法;两者都可以,但是更建议使用obtain方法,因为Message内部维护了一个Message池用于Message的复用,避免使用new 重新分配内存。

    private Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            if (msg.what == 0) {

            }
             else if (msg.what == 1) {

            }
            else if (msg.what == 2) {

            }
        }
    };

参考鸿洋大神的博客http://blog.csdn.net/lmj623565791/article/details/38377229

高效阅读源代码指南

最近一年里,我阅读了不少开源项目的源代码,之前也和朋友讨论过阅读源代码时遇到的一些问题。我觉得有必要写一篇博文分享一下自己的经验。 序章:准备工作 通常情况下,我们不会无缘无故拿到一份源代...
  • kai8wei
  • kai8wei
  • 2016年05月13日 00:10
  • 727

深度学习解决机器阅读理解任务的研究进展

本文是对深度学习在机器阅读理解领域最近进展的综述文章。
  • malefactor
  • malefactor
  • 2016年10月16日 19:05
  • 7675

Linux 下源代码阅读工具 —— vim + TagList + CTags

为什么不采用 Windows 下较为著名的源代码阅读软件 SourceInsight, 其一,其在 Linux 下的安装较为繁琐; 其二,切换代码时背景色的变化会为人的眼部产生极为不舒服的感觉; 其三...
  • lanchunhui
  • lanchunhui
  • 2016年05月30日 12:35
  • 1220

阅读Android源码的一些姿势

日常开发中怎么阅读源码 找到正确的源码 IDE是日常经常用的东西,Eclipse就不说了,直接从Android Studio(基于IntelliJ Community版本改造)开始。 我们平...
  • u014387163
  • u014387163
  • 2016年08月09日 11:00
  • 1617

自己的CSDN博文阅读量简单分析(至2016年1月)

早就计划了这个题目。写博有近一年了,零零散散的写了一共15篇。期间也一直关注自己的文章被多少人看了一眼,真看还是假看就没法知道了,阅读量也终于达到了1000。发现还是有些有趣的事情可以简单分析一下,也...
  • infovisthinker
  • infovisthinker
  • 2016年02月03日 14:23
  • 1755

iOS Safari阅读模式分析过程

本文为Safari阅读模式分析过程记录,没有做很好的整理。详细看另外一篇.
  • HorkyChen
  • HorkyChen
  • 2016年03月23日 00:19
  • 4170

【Android】开源 闲暇(Leisure) 阅读类应用的开发

今年暑假,Android大概学了两个月左右,很想做一款"能投入使用的App"。但是一没好的点子,二技术也不咋地,后来看到一个图灵机器人的接口,于是就花了一两天的时间写了一个"聊天机器人"发市场上了。显...
  • u012560612
  • u012560612
  • 2015年12月11日 19:22
  • 4194

阅读代码的一些心得体会

据说,作为一个优秀的程序员,他是在阅读/调试/删除--代码。目前,就阅读代码而言,我写一下我目前的一些心得体会吧。(高手绕道) 2017/3/29 16:56 此时,我正弄音视频流媒体直播传输的一...
  • bangdingshouji
  • bangdingshouji
  • 2017年03月29日 17:09
  • 427

如何阅读项目源代码

如何阅读项目源代码(github)Github工程项目过大?难以阅读怎么办,本文就根据自己阅读代码的经验,总结一下如何阅读源代码的经验。借鉴博客看他人的源码分析是最简单也是最直接的项目经验获取方式,一...
  • yxy11256974
  • yxy11256974
  • 2016年12月04日 00:30
  • 2614

Android开源实战:使用MVP+Retrofit开发一款文字阅读APP

文字控使用MVP+Retrofit开发一款文艺APP,一个非常美的文字阅读应用,界面基本上符合material design设计规范。 在该项目中,我采用的是MVP架构,该架构目前在Android开发...
  • zuiwuyuan
  • zuiwuyuan
  • 2016年11月13日 21:43
  • 2707
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hanler阅读
举报原因:
原因补充:

(最多只允许输入30个字)