android 消息处理机制

本文解析了Android中Looper、MessageQueue及Handler的工作原理。详细介绍了如何在一个线程中通过Looper准备消息队列并利用Handler发送和处理消息。此外还提供了一个简单的示例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有几个概念需要认识清楚:Thread Looper Handler这几个概念实际上都是面对消息队列来完成的

Looper实际上就是维护一个MessageQueue

在Handler初始化的时候把Looper所维护的消息队列交给Handler

我们看下面的代码:

 /**
     * Use the provided queue instead of the default one.
 */
    public Handler(Looper looper) {
        mLooper = looper;
        mQueue = looper.mQueue;
        mCallback = null;
    }

这个很能说明问题

一般来说一个线程对应一个Looper也就是维护一个消息队列

然后通过Handler进行消息的发送接收,同时Handler本身实现具体的handleMessage来处理具体的事情

一般来说一个app的在创建之初会自动建立一个Looper对应的消息队列也就自动建立

线程A的Message Queue里的消息,只有线程A对象可以处理。

使用Looper.myLooper可以取得当前线程的Looper对象

handler = new EevntHandler(Looper.myLooper());

handler = new EevntHandler(Looper.getMainLooper())

第一个是构造线程的handler 第二个是构造main UI的handler

下面看一个简单的例子:

<pre>
  *  class LooperThread extends Thread {
  *      public Handler mHandler;
  *      
  *      public void run() {
  *          Looper.prepare();
  *          
  *          mHandler = new Handler() {
  *              public void handleMessage(Message msg) {
  *                  // process incoming messages here
  *              }
  *          };
  *          
  *          Looper.loop();
  *      }
  *  }</pre>









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值