Android是参考Windows的消息循环机制来实现Android自身的消息循环的。<wbr></wbr>
Android通过Looper、Handler来实现消息循环机制,Android消息循环是针对线程的(每个线程都可以有自己的消息队列和消息循环)。<wbr></wbr>
Android系统中,Looper负责管理线程的消息队列和消息循环。我们可以通过Looper.myLooper()得到当前线程的Looper对象,通过Looper.getMainLooper()可以获得当前进程的主线程的Looper对象。<wbr></wbr>
一个线程可以存在(当然也可以不存在)一个消息队列和一个消息循环(Looper)。<wbr></wbr>
Activity是一个UI线程,运行于主线程中,Android系统在启动的时候会为Activity创建一个消息队列和消息循环(Looper)。<wbr></wbr>
Handler的作用是把消息加入特定的(Looper)消息队列中,并分发和处理该消息队列中的消息。构造Handler的时候可以指定一个Looper对象,这时handler与这个looper所在线程绑定,如果不指定则利用当前线程的Looper创建。<wbr></wbr>
Activity、Looper、Handler,Thread的关系如下图所示:

一个Activity中可以创建多个工作线程或者其他的组件,如果这些线程或者组件把他们的消息放入Activity的主线程消息队列,那么该消息就会在主线程中处理了。

因为主线程一般负责界面的更新操作,并且Android系统中的widget不是线程安全的,所以这种方式可以很好的实现Android界面更新。在Android系统中这种方式有着广泛的运用。

那么一个线程怎样把消息放入主线程的消息队列呢?答案是通过Handle对象,只要Handler对象以主线程的Looper创建,那么调用Handler的sendMessage等接口,将会把消息放入队列都将是放入主线程的消息队列。并且将会在Handler主线程中调用该handler的handleMessage接口来处理消息。

更多Android消息队列的信息请参看:<wbr></wbr>http://my.unix-center.net/~Simon_fu/?p=652

下面这个图从另外一个角度描述了他们的关系:



更多相关文章

  1. android双服务,消息通知(manifest)
  2. Android应用程序消息处理机制(Looper、Handler)分析
  3. Android消息机制(基于源码解析)
  4. Android(安卓)消息推送
  5. 【转】有关Android线程的学习
  6. Android基础笔记(五)-网络编程
  7. Android线程
  8. Android必备知识(五)多线程及AsyncTask
  9. 浅析Android单线程模型

随机推荐

  1. android 中 padding与margin的区别
  2. Android内存管理机制之一:lowmemory kille
  3. Android计算器低级错误?都是二进制惹的祸!
  4. android游戏引擎初探
  5. Android activity intent 入门
  6. Android(安卓)Studio Intent使用(显式、
  7. ios8.0正式版推送 苹果教大家如何从Andro
  8. Android消息机制(六) 总结
  9. Android系统启动流程解析
  10. 【Android 内存优化】Android Profiler