一切从Android的Handler讲起(一):Handler工作机制

一切从Android的Handler讲起(一):Handler工作机制

  有关Handler原理的相关博文或者书本有很多,包括肥柴本人也写过相关的博文,包括基础原理篇:Android基础知识(九):Handler机制的原理分析、基础使用方式篇:Android基础知识(十):Handler的使用方式与注意事项以及原理探究篇:Android进阶知识(二十二):Android的消息机制

嘿嘿

  之所以单独开一个篇章来讲讲Handler,原因是肥柴在重看Handler的时候发现如果从Handler出发,可以牵扯的东西有很多,甚至牵扯到了Android Framewrok层——Android Activity的启动、Android生命周期的回调等等

傻眼

  这个篇章将从Handler的工作机制入手,由浅入深逐个分析涉及的底层原理及在Android中的应用。起始篇则先概要的描述Handler的工作机制

  那么首先我们来看下Handler的工作机制图。

Handler的工作机制

  从Handler的工作机制图,可以得知:

  1、Handler负责消息的发送和处理:Handler发送消息给MessageQueue和接收Looper返回的消息并且处理消息。

  2、Looper负责管理MessageQueue:Looper会不断地从MessageQueue取出消息,交给Handler处理。

  3、MessageQueue是消息队列(实际上用链表实现),负责存放Handler发送过来的消息。

  4、一个Looper对应一个线程(自己所在的线程,如线程B)。

  用一句话来描述其工作机制就是:每个线程里只能有唯一的Looper和与之绑定的MessageQueue,Looper不断的从MessageQueue里取Message,交给对应的Handler的handleMessage处理

然后呢

  而从上面的Handler工作机制,肥柴可以得知Hanlder的切换线程原理如下图。

Handler切换线程原理

  Handler的切换线程原理:

  1、Looper的loop()方法运行在其创建的线程(线程B)中,同时Looper创建时对应的创建了MessageQueue;

  2、当Handler在线程A中发送一条消息存放到MessageQueue时,Looper的loop()方法在线程B把消息取出来,并交给Handler处理,所以Handler的处理消息的方法是运行在Looper所在的线程(线程B)的。

  概述起来就是:由于多个线程之间共享内存空间,所以Handler可以在线程A把消息存放到MessageQueue,Looper可以在线程B把消息取出来,一存一取就实现了线程的切换

  以上便是Handler的工作机制概要,从表面上是比较容易理解的,那么Android内部是如何实现这一机制的呢?而这个机制又对Android底层有什么重大意义呢?这就是肥柴这个篇章要讲的:一切从Android的Handler讲起。

 - - - - - 起始篇完 - - - - -

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值