在 Android 中,Handler 是用于在不同线程之间传递和处理消息的工具。它可以用于定时任务、延迟执行任务等。Handler 如何保证延迟发送消息的核心在于其与 MessageQueue 和 Looper 的协同工作。
核心组件
- Handler:
用于发送和处理消息和可运行的任务(Runnable)。 - MessageQueue:
消息队列,存储所有待处理的消息。 - Looper:
循环从 MessageQueue 中取出消息并分发给相应的 Handler 进行处理。
延迟发送消息的工作原理
当你使用 Handler 的 postDelayed 或 sendMessageDelayed 方法时,消息会被添加到 MessageQueue 中,并带有一个指定的时间戳。Looper 会根据时间戳来决定何时处理这些消息。
具体步骤
1. 创建 Handler:
通常在主线程中创建一个 Handler,它会与主线程的 Looper 和 MessageQueue 关联。
Handler handler = new Handler(Looper.getMainLooper());
2.发送延迟消息
使用 postDelayed 或 sendMessageDelayed 方法发送延迟消息或任务。
// 延迟 2000 毫秒后执行 Runnable 任务
handler.postDelayed(new Runnable() {
@Override
public void run() {
// 执行任务
}
}