Android面试-Android消息机制

原创 2018年04月17日 18:38:56

消息机制概述

Handler

利用当前线程的Looper创建内部消息循环系统,主要负责发送和处理消息。另外,也可以通过一个Looper创建一个Handler,这样handler发送的消息就会在Looper所在的线程执行。

MessageQueue

以队列的形式(内部存储结构为单链表)存储和操作消息列表,包含插入和读取消息两个操作,读取是一个无限循环的方法,若消息队列没有消息则一直阻塞,有消息则读取并将其移除

Looper

无限循环地检查MessageQueue是否有新消息,有的话就取出来给Handler处理,否则一直阻塞等待。一般线程默认是没有Looper,若要使用需先创建Looper.prepare(),然后创建Handler,然后Looper.loop()开启消息循环,Looper是运行在Handler所在的线程中的,Handler会使用ThreadLocal来获取当前线程的Looper。若要退出Looper可以采用quit或quitSafely(会清空所有延时消息,处理完消息队列中的非延时消息后再退出)

主线程的消息循环

在ActivityThread的main方法中通过Looper.prepareMainLooper()创建主线程的Looper及MessageQueue,并通过looper.loop()开启主线程消息循环。

主线程为什么不会因为Looper.loop()循环卡死?

主线程再进入消息循环前,会创建一个Linux管道,可以让主线程再消息队列为空时进入空闲等待状态,当消息队列有消息需要处理时再唤醒主线程。

Android面试题(五)—— Android的消息机制

前言Handler是Android消息机制的上层接口,平时使用起来很方便,我们可以通过它把一个任务切换到Handler所在的线程中去运行。而最常用的就是拿来从子线程切换到主线程以便更新UI。关于And...
  • a471893438
  • a471893438
  • 2016-08-01 13:45:58
  • 850

Android面试系列之异步消息处理相关

我们在平时的项目开发中,肯定会遇到处理异步任务的场景。因为Android中的UI线程是不安全的,我们需要更新ui的话就必须在ui线程上进行操作。否则的胡就会抛异常。 这个时候我们就需要用到异步消息处...
  • yuzhiqiang_1993
  • yuzhiqiang_1993
  • 2017-05-30 16:27:36
  • 568

公众号ImportNew——消息机制

地址: 1.消息要点 消息队列,消息循环(分发),消息处理,事件处理。 以MQ的处理流程为例: 有Producer,产生消息。 有Broker,作为消息队列,接收Producer产生的消息作为中转媒介...
  • xxcupid
  • xxcupid
  • 2016-10-12 23:16:00
  • 530

android消息机制原理详解

android消息机制原理详解Android消息机制概述说到Android的消息机制,Android初级工程师(不包括那些初学者)肯定会想到Handler。是的,Android的消息机制主要是指Han...
  • ouyangfan54
  • ouyangfan54
  • 2017-02-12 22:08:54
  • 2604

Android开发——Android的消息机制详解

1. 我们为什么需要Android的消息机制   我们知道,Android规定访问UI只能在主线程中进行。若在子线程中访问UI,就会抛出异常。这个验证由ViewRootImpl的checkThread...
  • SEU_Calvin
  • SEU_Calvin
  • 2016-08-04 16:06:36
  • 13621

面试题:阐述Handler的实现原理

处理过程: 从handler中获取一个消息对象,把数据封装到消息对象中,通过handler的send…方法把消息push到MessageQueue队列中。 Looper对象会轮询MessageQu...
  • blackzhangwei
  • blackzhangwei
  • 2016-07-18 21:01:35
  • 6513

Android消息机制的原理剖析—闭环总结

前面分篇介绍了Hanlder、Messagequeue、Looper、Message、消息池等消息机制的基本单元,源码细节太多,本着“深入浅出”的原则,概述消息机制基本流程,将消息机制的原理闭环。我将...
  • u012164786
  • u012164786
  • 2016-06-19 00:14:48
  • 3419

简述Android消息机制及解惑

Android消息机制这篇文章主要目的是简单总结消息机制的工作原理以及解决一些疑惑点概述 Android的消息机制主要是指 Handler 的运行机制,这个机制不仅包含发送消息的 Handler ...
  • GeDune
  • GeDune
  • 2017-03-02 11:01:51
  • 199

Android消息机制详细解析

在初学Android的时候我们都碰过这个问题,要从服务端获取数据,这时候,我们知道在主线程不能做耗时操作,否则会引起ANR,更不能在主线程中联网,Android4.0以后会报一异常,或者在子线程中更新...
  • lxzmmd
  • lxzmmd
  • 2016-05-20 21:58:19
  • 1490

Android 线程消息机制深入分析

1 前言『Android线程消息机制』是本文所要讨论的内容,在此之前我们需要先简单介绍下(之后会详细说明)线程消息机制中的四个主要成员,它们分别是Looper、Handler、Message和Mess...
  • hjpdyxhjd
  • hjpdyxhjd
  • 2015-12-20 23:34:44
  • 1844
收藏助手
不良信息举报
您举报文章:Android面试-Android消息机制
举报原因:
原因补充:

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