线程间通信之Handler

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所在线程执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值