美文网首页Android知识Android进阶之旅程序员
HandlerLooperMessage享元模式分析

HandlerLooperMessage享元模式分析

作者: umbrella1 | 来源:发表于2017-05-11 22:24 被阅读67次

先看下这几个类的关系

Looper:是消息循环监听器,一个线程(包括UI线程)和Handler是一对多的关系,也就是在线程中使用handler,必须要有Looper。

Handler:发送消息和处理消息

Message:一个消息对象

MessageQueue:相当于消息池,Looper中loop()会从MessageQueue.next()取出Message对象。

先来看下,Handler、Message、Looper的使用:

1、UI线程下使用Handler:

输出的log:

这里的handler是在主线程里面工作。

2、子线程使用Handler:

输出的log:

这边的handler是在子线程Thread-660里面工作,,也就是handler的dispatchMessage其实是在子线程里的。

如果不加上Looper.prepare(),Looper.loop()

会出现崩溃:

对比下UI线程程跟子线程使用handler是不一样,其实原理是一样,一个线程的handler必须要有一个looper,UI线程的looper是在Zygote进程孵化出应用进程,然后在这个dalvik应用进程里执行ActivityThread的main方法中实行了Looper.prepareMainLooper()和Looper.loop();

ActivityThread的main():

Looper类中:

Looper.prepareMainLooper()

这边的static final ThreadLocal sThreadLocal = new

ThreadLocal();是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,数据存储以后,只有在指定线程中可以获取到存储的数据,对于其它线程来说无法获取到数据。

接下来看Looper.loop()循环处理Message:

/**

* Run the message queue in this thread. Be sure to call

* {@link #quit()} to end the loop.

*/

msg.target.dispatchMessage(msg);就是调用handler的dispatchMessage(msg);

msg.recycleUnchecked进行回收Message对象:

Message类中:recycleUnchecked和obtain的享元模式处理:

recycleUnchecked:

实行完后:

obtain():

实行完:

相关文章

  • HandlerLooperMessage享元模式分析

    先看下这几个类的关系 Looper:是消息循环监听器,一个线程(包括UI线程)和Handler是一对多的关系,也就...

  • 设计模式之享元模式(flyweight模式)

    引入享元模式 享元模式的实例 享元模式的分析 引入享元模式 flyweight是轻量级的意思,指的是拳击比赛中选手...

  • 设计模式 | 享元模式及典型应用

    前言 本文的主要内容: 介绍享元模式 示例-云盘 总结 源码分析享元模式的典型应用String中的享元模式Inte...

  • 第4章 结构型模式-享元模式

    一、享元模式的简介 二、享元模式的优缺点 三、享元模式的实例

  • 享元模式

    一、享元模式介绍 二、享元模式代码实例

  • 设计优化之享元模式

    何为享元模式,大家不要被这个陌生的词汇所吓倒,其实笔者感觉这个是最容易理解的,下面请看笔者分析。 享元模式: 所谓...

  • 设计模式--享元模式

    目录 本文的结构如下: 引言 什么是享元模式 模式的结构 典型代码 代码示例 单纯享元模式和复合享元模式 模式扩展...

  • 享元模式C++

    享元模式,就是运用共享技术有效地支持大量细粒度的对象。 享元模式结构图 享元模式基本代码 应用场景 享元模式可以避...

  • 设计模式之——享元模式

    1 享元模式的定义 享元模式:使用共享对象可有效地支持大量细粒度的对象。享元模式是池技术的重要实现方式。享元模式的...

  • 好程序员Java培训​分享java设计模式之享元模式

    好程序员Java培训​分享java设计模式之享元模式,Java设计模式中的享元模式。享元模式有点类似于单例...

网友评论

    本文标题:HandlerLooperMessage享元模式分析

    本文链接:https://www.haomeiwen.com/subject/wgrhtxtx.html