2.简述 Handler 的具体用法?
时间: 2024-10-14 10:10:16 浏览: 34
Handler是在Android中用来在主线程(UI线程)之外执行Runnable和Message的对象。它的主要用途是实现跨线程的通信,尤其是在处理用户界面更新时,由于Android的设计原则,UI操作必须在主线程中进行,因此我们不能直接在子线程中更新UI。
以下是Handler的基本用法:
1. 创建Handler实例:通常在一个Activity或Service中创建Handler,传入Looper实例(通常是当前线程的Looper,如果在主线程就是mainLooper)。
```java
private Handler mHandler = new Handler(Looper.getMainLooper()) {
// 处理消息的方法
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
// 根据msg的数据执行相应操作
}
};
```
2. 发送消息或Runnable:在非UI线程里,通过`sendEmptyMessage()`、`sendMessage()`、`post()`等方法发送任务到Handler。例如:
```java
// 在子线程中
new Thread(new Runnable() {
@Override
public void run() {
// 执行耗时操作
// ...
// 使用Handler发送消息
mHandler.sendMessage(mHandler.obtainMessage());
}
}).start();
```
3. 处理消息:Handler会在其关联的Looper循环中读取和处理消息。当主线程有空闲时间时,它会检查是否有新的消息需要处理。
阅读全文