首页 > 移动平台 > 详细

Android Handler looper MessageQueue

时间:2015-10-23 11:47:42      阅读:267      评论:0      收藏:0      [点我收藏+]

我相信很多刚学习android的时候对Handler,Looper,MessageQueue都有一些困惑。下面我就Handler,Looper,MessageQueue给予我本人的理解。

首先什么是Handler,Handler是谷歌对于android更新UI设置的一套完整机制,可以收发消息(send message,post runnable).

那为什么要用它更新UI,SDK官方文档上说明,android更新UI必须在主线程中,一切在子线程中更新UI的操作都是不安全的。为什么会不安全,因为如果我们允许在子线程更新UI,将带来多线程并发问题,一旦多个子线程更新UI,并且没有加锁机制将会造成混乱,程序卡死。那你可能会说那加锁不就行了,那这样会增加系统的资源开销,使程序的效率大大降低。因此,android相出一套规范标准:即利用handler机制更新UI.

说起handler,我们必须了解它的几个主要方法,sendMessage(new Message()),postRunnable(New Runnable()).

当我们每次新建一个handler,都会绑定在相应的thread中,可以是主线程也可以是自己新建的线程,也会获得一个Looper对象。主线程中是通过handler.getMainLooper,子线程通过handler.getLooper.

话说Looper,Looper对象接收handler发送过来的消息,并发送消息。当handler sendMessage之后,looper将消息loop进一个消息队列中(Message queue)。消息队列中存放了一串消息,最后也是looper从中拿出来又给handler来通过handleMessage来处理消息。

这样一个完整的消息发送处理过程就这样完成了。handler--->sendMessage--->looper---->messageQueue--->looper---->handler---->handerMessage

Android Handler looper MessageQueue

原文:http://www.cnblogs.com/kang-shi-fu/p/4903971.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!