您的位置:首页 > 其它

线程间通信之Handler

2015-11-08 20:05 218 查看

Handler消息机制

使用Handler在主线程和子线程之间传递消息的机制,就是通过Handler获取主线程的消息队列,将子线程的消息发送到主线程的消息队列,由Looper取出后交给目标Handler处理。

Looper

首先主线程会初始化时调用Looper.prepare()创建主线程的Looper,创建的Looper对象持有一个消息队列引用MessageQueue,Looper无限轮询消息队列MessageQueue中的消息,并且将消息分发给各个目标Handler处理。这里需要注意的是,Looper是在主线程中默认创建,所以如果在子线程中创建Handler就获取不到Looper引用,需要手动prepare创建。

Handler

创建Handler时会获取当前线程的一个Looper,Looper在这个线程里轮询它的消息队列,Handler中的handleMessage方法是Looper来调用的。

Message

我们可以调用sendMessage()、postDelayed()等方法,实现了线程间Message的传递。

Message会相应地持有Handler(target)、Runnable(callback)引用,其中target用于轮询时分发消息,而callback则使Runnable的run()方法可以在Looper所在线程执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: