Android中Handler详解,线程间通信机制

原创 2015年11月19日 17:21:31

已经很长时间没有写过博客了,最近看了一些大牛们写的文章,都说写博客是一个很好的习惯,可以把零散的知识记录下来,这样以后如果要遇到,就可以很快的把丢失的知识找回来,达到事半功倍效果。我前段时间刚刚找到我人生中的第一份工作,于是就想着把面试中经常会被问到的问题来记录一下。希望大家喜欢微笑

Hanlder的使用,我想已经不用给大家说了,我相信搞过Android开发的人应该都会用。但是大多数只是知道使用,却不知道Handler的工作原理。今天我就把我对Handler的理解给大家讲一讲。

一提到Handler,我们必须要知道这几个类:

Handler:线程和线程通信的工具,用来在线程之间传递消息(Message)

MessageQueue:消息队列,用来存放消息的,满足队列的特性,先进先出

Looper:管理消息队列中的消息。与当前线程绑定,一个线程只能拥有一个Looper,一个Looper拥有一个消息队列(MessageQueue),不断的从其拥有消息队列中取消息来交给当前线程来处理。如果其拥有的消息队列中没有消息,则进去阻塞状态。

Message:消息。用来在线程间传递消息的。

我们现在已经对线程间通信所用到的几个类有个基本的了解了,接下来就看看它们具体是怎么协同工作的。

1.Handler的创建,主线程(UI线程)在创建Handler的时候,会通过ThreadLocal创建一个Looper,每个一个线程只能创建一个Looper,这也是使用ThreadLocal的原因。同时,当Looper创建的时候,会初始化一个MessageQueue(消息队列);

2.Handler的创建消息。每一个消息都需要Handler去处理,通过Handler的创建就可以去处理消息。Handler创建的时候,首先会去消息池中查找,如果消息池中存在此消息,则直接从消息池中获取,如果没有则再实例化消息。

3.消息的发送,子线程通过Handler将消息发送MessageQueue当中去,Looper不停对MessageQueue对查看,有消息的话,则交给主线程去执行,如果没有的话,则循环等待。

执行步骤如下图示:


Handler实现线程间通信机制的原理

  • 2016年10月31日 20:49
  • 507KB
  • 下载

Android线程间通信机制——深入理解 Looper、Handler、Message

Android中的Looper , Handler , Message有什么关系?本篇博客目的首先为大家从源码角度介绍3者关系,然后给出一个容易记忆的结论。 1、 概述 Handler 、 Loop...

android源码阅读--线程间通信Handler消息机制

线程状态 /**  * A representation of a thread's state.A given thread may only be in one  * state at a ti...

Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法

转自:http://www.cnblogs.com/-OYK/archive/2011/08/03/2126657.html Android的消息机制(一)   andr...
  • wcy9200
  • wcy9200
  • 2012年08月25日 09:34
  • 1517

Android线程间通信(四):Handler

在Android整个线程间通信的结构中,Message是通信内容的载体,MessageQueue是Message的管理者,Looper负责从MessageQueue中循环地取消息并分发给对应Handl...

Android线程间通信——Looper Handler

首先先搞清楚Looper handler messageQuee之间的关系

Android子线程间通信之创建handler

使用handler进行子线程之间通信

模拟android Handler线程间通信

消息类:package p; public class Message { Runnable runnable; private long start; long delay; Handl...

Android线程间通信之Handler

Handler机制及基本使用也已经是老生常谈了~~~1、概述Android中拒绝子线程中更新UI。且主线程中过多执行耗时操作会造成界面卡顿导致ANR影响用户体验,因此Handler线程间通信的信使应运...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android中Handler详解,线程间通信机制
举报原因:
原因补充:

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