Android Handler 传Looper
在Android开发中,我们经常会遇到需要在不同线程之间进行通信的情况。Android提供了Handler类来帮助我们实现线程间的通信。Handler是Android中处理消息的机制,它可以将消息发送到消息队列中,并且可以在指定的Looper线程中处理这些消息。
Looper
在Android中,每个线程都有一个Looper对象,它是一个消息循环。Looper会不断地从消息队列中取出消息并将其分发给Handler进行处理。默认情况下,主线程(UI线程)已经有一个Looper对象与之关联。
Handler
Handler是与特定Looper关联的对象,它用来处理消息。当我们创建一个Handler对象时,它会自动与当前线程的Looper关联。我们可以使用Handler发送消息、发送延迟消息或者处理消息。
代码示例
下面是一个简单的示例,演示了如何使用Handler在不同线程之间传递消息:
// 创建一个Handler对象,并在子线程中发送消息
Handler handler = new Handler(Looper.getMainLooper());
new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
Handler subThreadHandler = new Handler();
subThreadHandler.post(new Runnable() {
@Override
public void run() {
// 在子线程中处理消息
Log.d("SubThread", "Message from sub thread");
}
});
Looper.loop();
}
}).start();
// 主线程中处理消息
handler.post(new Runnable() {
@Override
public void run() {
Log.d("MainThread", "Message from main thread");
}
});
在上面的代码中,我们创建了一个Handler对象,并在子线程中使用Looper来创建一个子线程的消息循环。然后我们在子线程中使用Handler发送了一条消息。在主线程中,我们也创建了一个Handler对象,并使用它来处理来自子线程的消息。
总结
通过使用Handler和Looper,我们可以很方便地在不同线程之间传递消息。Handler可以让我们将消息发送到消息队列中,而Looper则负责从消息队列中取出消息并交给Handler处理。这种机制在Android开发中非常常见,帮助我们实现线程之间的通信。如果你需要在Android应用中进行线程间的通信,不妨尝试使用Handler和Looper来实现。