android开发教程之使用looper处理消息队列


在Android开发中,Looper是消息处理机制的核心组件之一,它负责管理和分发消息队列(MessageQueue)中的消息。Looper通常与Handler一起使用,以实现线程间的通信和线程内的消息循环。

以下是一个简单的示例,说明如何在Android中设置和使用Looper来处理消息队列:

1. **在主线程(UI线程)中,Looper已经为你准备好了**:

在Android的主线程(也就是UI线程)中,系统已经为你创建了一个Looper,所以你不需要手动创建。你可以直接使用Handler来发送和接收消息。


   Handler handler = new Handler() {
       @Override
       public void handleMessage(Message msg) {
           // 处理接收到的消息
           super.handleMessage(msg);
       }
   };

   // 发送消息
   Message message = Message.obtain();
   message.what = 1; // 定义消息类型
   handler.sendMessage(message);
   

2. **在非主线程中创建Looper**:

如果你需要在非主线程中创建自己的消息循环,你需要手动创建一个Looper,并绑定一个Handler。


   new Thread(new Runnable() {
       @Override
       public void run() {
           // 创建Looper
           Looper.prepare();

           // 创建Handler
           Handler handler = new Handler() {
               @Override
               public void handleMessage(Message msg) {
                   // 处理消息
               }
           };

           // 循环执行Looper
           Looper.loop();
       }
   }).start();

   // 从另一个线程或地方发送消息到这个Handler
   // 注意:这里需要保证Handler的引用是有效的
   

在这个例子中,`Looper.prepare()`用于在当前线程中初始化一个Looper对象,并创建一个消息队列。`Looper.loop()`则开始循环,不断从消息队列中取出消息,并将消息分发给相应的Handler处理。

记住,每个Looper对象都与一个线程相关联,并且每个线程最多只能有一个Looper对象。Looper的生命周期与线程的生命周期相同,一旦线程结束,Looper也会结束。

希望这个示例能帮助你理解如何在Android中使用Looper处理消息队列。