Android-Handler机制详解并自定义Handler

本文详细介绍了Android的Handler机制,并通过创建MyMessage、MyMessageQueue、MyLooper和MyHandler四个类来实现自定义Handler。文章阐述了Handler、Message、MessageQueue和Looper的角色与工作原理,并给出了具体的代码实现,最后通过测试验证了自定义Handler的正确性。

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

之前研究过Android的Handler机制,但是一直没有机会自己实现一次。最近又看到这个Handler机制,于是决定自己实现以下这个Handler机制。
首先,简单介绍以下Handler机制。

Handler机制在Android中通常用来更新UI:子线程执行任务,任务执行完毕后发送消息:Handler.sendMessage(),然后在UI线程Handler.handleMessage()就会调用,执行相应处理。

Handler机制有几个非常重要的类:

Handler:用来发送消息:sendMessage等多个方法,并实现handleMessage()方法处理回调(还可以使用Message或Handler的Callback进行回调处理,具体可以看看源码)。

Message:消息实体,发送的消息即为Message类型。

MessageQueue:消息队列,用于存储消息。发送消息时,消息入队列,然后Looper会从这个MessageQueen取出消息进行处理。

Looper:与线程绑定,不仅仅局限于主线程,绑定的线程用来处理消息。loop()方法是一个死循环,一直从MessageQueen里取出消息进行处理。

原理图如下:
这里写图片描述

按照上面介绍的4个重要组成类,从内向外依次自定义相应的类,实现Handler机制。
MyMessage类

public class MyMessage {
    private int code;
    private String msg;
    MyHandler target;

    public MyMessage(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

MessageQueue类:(由于该类可以有多种实现方式,所以在此定义一个接口)

public interface IMyMessageQueue {
   
   
    MyM
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值