Android 消息机制 - Handler 实现原理深入剖析
2019-01-28 本文已影响12人
289346a467da
Android 的消息机制Handler,是在开发过程中都会用到的,它可以轻松的从子线程切换到主线程,大部分的时候我们将Handler会用在更新UI的操作.那么Handler是如何做到不同线程通信的呢? 如何切换线程的呢?本篇文章带领大家来轻松的实现一个Handler,并深入的去了解Handler的实现原理
在讲解之前,我们先来了解一下Handler的工作过程,至于如何使用Handler,这里我就不在复述了,只要做过Android开发我相信大家都会使用.
Handler的工作过程
Handler发送消息是通过Looper以及MessageQueue协同工作的.
Looper的初始化:在应用启动时ActivityThread会创建一个Looper.prepare()
,并调用Looper.looper()
方法无限循环等待是否有新的消息.
发送消息:通过Handler的send方法发送消息,会调用MessageQueue.enqueue()
方法,此时消息(Message)会被加入MessageQueue消息队列中,已知在Looper初始化是,Looper.looper()
一直在监听是否存在新的消息,此时Looper发现有新消息到来,就会处理该消息,最终会调用Handler.handleMessage()
方法,Looper是运行在创建Handler的线程中的,handleMessage一定在创建Handler的线程中去执行.