前言
Android 的 Handler 是一个用于管理线程间通信的工具,主要用于在不同的线程之间发送和处理消息。它是 Android 应用程序中处理异步任务的重要组成部分,尤其是在需要在后台线程进行操作,而操作结果需要在主线程(UI 线程)中更新界面时。
Handler 的基本概念
- 消息(Message): Handler 通过消息(Message 对象)来进行通信。消息可以包含数据,让接收线程知道接下来要做什么。
- 消息队列(Message Queue): 每个线程只有一个消息队列,用于存放等待处理的消息。
- Looper: Looper 是在线程中循环读取消息队列,并将消息分发给 Handler 的机制。每个使用 Handler 的线程必须准备一个 Looper。
如何使用 Handler
在 Android 应用中,通常在主线程中创建 Handler,以便可以从其他线程发送消息到主线程来更新 UI。
-
Handler handler = new Handler(Looper.getMainLooper()) {@Overridepublic void handleMessage(Message msg) {} };
可以从任何线程向 Handler 发送消息。
-
Message message = handler.obtainMessage();handler.sendMessage(message);
在 Handler 的
handleMessage
方法中处理消息。这个方法会在 Handler 所在的线程执行。 -
@Override public void handleMessage(Message msg) {}
如果需要在 handleMessage
方法中处理多种不同的任务,可以通过定义不同的消息类型来 区分这些任务。
private static final int UPDATE_UI = 1;private static final int PERFORM_COMPUTATION = 2;private Handler handler = new Han