`
小桔子
  • 浏览: 23509 次
  • 性别: Icon_minigender_2
  • 来自: 贵阳
社区版块
存档分类
最新评论

Handler 消息机制分析

阅读更多

Handler消息分析

ThreadLocal sThreadLocal =new ThreadLocal();
是什么鬼,存放数据的工具,当前线程存放的数据,别的线程获取不到
这个类提供get和set方法,比如在A线程中sThreadLocal.set("value");B线程中打印 sThreadLocal.get();打印出来为空。原因这边博文上分析得很清楚:
http://blog.csdn.net/singwhatiwanna/article/details/48350919

关于 Handler Looper 以及MessageQueue的关系:
hreadLocal中存放Looper对象,每个Looper对象绑定得有一个MessageQueque。
通常handler对象在创建的时候会创建looper以及messageQueue,在ui线程中,这个创建的方法已经自动创建了,所以通常我们不去创建。而如果handler对象在子线程中则需要调用Looper.prepare();

Looper够构造器
private Looper(){
      mQueue=new MessageQueue(); //可看出创建looper对象时也创建了messageQuere()对象
      mRun=true;
     mThread=Thread.currentThread();
}

Looper的prepare方法
public static final void prepare(){
if(sThreadLocal.get()!=null){
throw new RuntimeException("Only one Looper may be created per thread");
}
sThreadLocal.set(new Looper());//线程中调用Looper.prepare();方法时创建了looper,这里的looper对象存放在sThreadLocal中,独立属于当前线程
}

Looper的方法源码 使用先进先出的方式去读取messagequeue中的消息。

分享到:
评论

相关推荐

    Android Handler消息处理顺序分析

    在Android开发中,Handler、Looper和Message是实现线程间通信的重要组件,它们共同构建了Android的消息处理机制。本文将详细分析Android Handler消息处理的顺序,以及如何利用这些组件进行异步操作。 首先,理解...

    Android应用程序消息处理机制(Looper、Handler)分析

    Android 应用程序中,消息处理机制是其异步编程的核心组成部分,主要涉及三个关键组件:Handler、Message和Looper。这种机制使得应用可以有效地管理线程间的通信,避免阻塞主线程,提升用户体验。 首先,我们需要...

    Android 之 Looper、MessageQueue、Handler 与消息循环

    本文详细介绍了Android中消息处理机制的核心组件Looper、MessageQueue和Handler的工作原理及其实现细节。理解这些概念有助于开发者更好地设计和实现多线程应用程序,提高程序的性能和用户体验。通过合理利用这些组件...

    android handler 机制 源码

    在这里,我们将深入探讨Android Handler机制的源码,了解其工作原理。 首先,`Handler`类是处理消息的核心组件。它通过`post()`或`sendMessage()`方法接收并分发Message对象。当创建一个Handler实例时,通常会与...

    handler回调机制 demo

    在Android开发中,Handler回调机制是用于解决线程间通信的核心技术之一,它与Looper和Message紧密相连,共同构建了Android的消息处理系统。本篇将深入解析Handler回调机制,并通过提供的"handler的回调机制"DEMO来...

    对handler机制的回答

    ### Handler机制详解 #### 一、引言 在Android开发中,`Handler`机制是非常重要的一个概念,尤其是在处理异步任务、更新UI等场景中。本文将深入探讨`Handler`机制的基本原理及其内部实现机制,帮助读者更好地理解...

    handler机制

    - **Message类**:是Handler机制中用于封装消息的对象。它包含了几个重要的字段: - `what`:int类型,用于标识消息的类型。 - `arg1`、`arg2`:int类型,用于存放一些简单的参数。 - `obj`:Object类型,可以...

    Android的Handler机制实现原理分析

    先上图,让大家好理解下handler机制:handler机制示例图上面一共出现了几种类,ActivityThread,Handler,MessageQueue,Looper,msg(Message),对这些类作简要介绍:ActivityThread:程序的启动入口,为什么要介绍...

    源码分析Android的消息机制

    ​Android消息机制主要指的是Handler的运行机制,是一块很有意思,也很有研究意义的内容。本文计划在较短的篇幅内,通过一定的源码,分析Android消息机制,并在结尾说点”题外话“,帮助我们理解消息机制在安卓应用...

    Android应用程序消息处理机制(Looper、Handler)分析[收集].pdf

    在Android应用程序设计中,消息处理机制是其核心组成部分,它保证了UI线程的流畅运行和异步任务的处理。这个机制主要涉及到三个关键组件:Looper、Handler和Message。下面我们将详细探讨这三个部分以及它们如何协同...

    Android Handler 原理分析及实例代码

    在Android开发中,`Handler` 是一个至关重要的组件,它涉及到多线程、UI更新以及消息传递机制。本文将深入探讨 `Handler` 的工作原理,分析其如何在不同线程间进行通信,并通过实例代码来展示其具体用法。 ### ...

    handler全面分析

    Handler、Looper和Message三者共同构建了一个消息传递机制,使得非UI线程可以安全地与UI线程交互。下面我们将深入探讨Handler的各个方面。 首先,我们来理解Handler的基本概念。Handler是一个接口,它定义了如何...

    Android应用程序消息处理机制(Looper、Handler)分析中文最新版本

    应用程序的主线程不断地从这个消息队例中获取消息(Looper),然后对这些消息进行处理(Handler),这样就实现了通过消息来驱动应用程序的执行,本文将详细分析Android应用程序的消息处理机制。有需要的朋友可以下载...

    Android Handler消息派发机制源码分析

    Handler、Message和MessageQueue三者共同构成了Android的消息传递机制,使得开发者可以在不同的线程间进行通信,尤其是在UI更新和异步任务处理时。本文将深入解析Android Handler的`sendMessage`方法的工作流程。 ...

    Android中消息机制分析

    对于Android开发者而言,我们处理异步消息用的最多的也是轻车熟路的一种方式,就是使用Handler进行消息的分发和处理。但是我们在一个页面(Activity 或者 Fragment)中可以直接使用Handler进行消息的分发和处理。...

    Android Handler 机制实现原理分析

    Android Handler机制是Android异步消息处理的核心,它用于在主线程和子线程之间进行通信,确保UI更新在主线程中执行。以下是对Handler机制实现原理的详细解析: 1. **Handler**: Handler类是消息处理的中心,它有两...

    Handler源码分析流程以及面试问题解答

    - Handler机制常用于在非UI线程(如子线程)中生成消息,然后通过Handler发送到主线程进行处理,从而实现异步操作后的UI更新。 6. **面试问题** - 什么是Handler-Looper-MessageQueue机制?它如何实现线程间通信...

    androidHandler测试的demo

    在Android开发中,`Handler`、`Looper`和`Message`是实现线程间通信的重要组件,它们共同构建了一个消息处理机制。这个机制允许开发者在不同的线程之间传递消息,通常用于更新UI或者执行异步任务。下面我们将深入...

    handler线程

    Handler机制是Android系统中用于处理消息和线程通信的重要组成部分。它主要由四个核心组件组成:`Looper`、`Handler`、`MessageQueue` 和 `Thread`。 #### 二、核心组件解析 1. **Looper** - **定义**:`Looper`...

Global site tag (gtag.js) - Google Analytics