您的位置:首页 > 其它

Handler 消息传递机制

2015-04-27 13:07 169 查看
原文来自:http://blog.csdn.net/fulinwsuafcie/article/details/7760041

1,Handler 的概念

Handler 是用来干什么的?

1)执行计划任务,可以在预定的时间执行某些任务,可以模拟定时器

2)线程间通信。在Android的应用启动时,会创建一个主线程,主线程会创建一个

消息队列来处理各种消息。当你创建子线程时,你可以在你的子线程中拿到父线程中

创建的Handler 对象,就可以通过该对象向父线程的消息队列发送消息了。由于Android

要求在UI线程中更新界面,因此,可以通过该方法在其它线程中更新界面。

角色描述:

1) Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue

2) Handler: 你可以构造Handler对象来与Looper沟通,以便push 新消息到 Message Queue里,或者

接收Looper从Message Queue 里所送来的消息。

3)Message Queue(消息队列):是用来存放线程放入的消息。

4)线程:UI thread 通常就是 main thread,而Android 启动程序时会替它建立一个Message Queue。

每一个线程里可含有一个 Looper 对象以及一个 Message Queue 数据结构。在你的应用程序里,

可以定义 Handler 的子类别来接收 Looper 所送出的消息。

2,Handler 的执行过程



每个handler 对应一个线程 thread , 在子线程中 handler 发送的消息会进入到 Message Queue当中去,由 looper 再来分发给 Handler 处理。

3,Handler 异步实现方法

见实例

http://download.csdn.net/detail/fulinwsuafcie/4437306

4,Handler 与线程的关系

Handler 一般运行于主线程内

问题:

1,使用Handler 是异步的,它会建立新的线程么? 不会

2,Handler 是在主线程内么? 一般都会在主线程内,但也可以在子线程中创建Handler

3,Handler 的 post 和 sendMessage 方法,使用的是一个队列不安是两个? 一个

4,子线程中建立一个 handler, 然后sendMessage 会怎么样? 会崩溃

5,子线程建立 handler ,构造的时候舒心入主线程的 Looper ? yes
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: