Android异步消息处理机制

一.主要组成部分:

         Android中的异步消息处理机制主要组成部分为:MessageMessageQueueHandlerLooper,接下来就让我带大家一起看看吧!

1.Message:

        Message,即消息,用于不用线程之间交换数据,其内部可以携带少量的信息。

(1)Message字段介绍:

    message.what;//int类型,标识是哪条信息

    message.arg1;//int类型,存放整型数据

    message.arg2;//int类型,存放整型数据

    message.object;//Object类型,存放任意对象

(2)Message对象的获取方式:

    Message message1 = new Message();//利用Message类的构造方法创建对象

    Message message2 = Message.obtain();//利用Message类中的obtain()方法创建对象

    Handler handler = new Handler();
    Message message3 = handler.obtainMessage();//利用创建的Handler对象中的obtainMessage()方法创建对象

2.Handler:

        Handler,即处理者,用于消息的发送和处理。

(1)Handler的构造函数:

public Handler() {}//无参构造,已经被弃用

public Handler(Handler.Callback callback) {}//有参构造(回调函数),已经被弃用

public Handler(Looper looper) {}//有参构造(Looper)

public Handler(Looper looper, Handler.Calback callback) {}//有参构造(Looper,回调函数)

(2)关键方法:

public void handleMessage(Message msg) {}//处理消息

/**
*获取Message的方法
*只列举了无参构造
*实际上还有几个有参构造的方法
*这里不一一介绍了
*/
public final Message obtainMessage() {}

/**
*发送消息
*还要众多send类与发消息相关的,不一一列举了
*还有post类与发送消息相关,最终也是调用的sendMessage()方法
*/
public final boolean sendMessage(Message msg) {}

public void dispatchMessage(Message msg) {}//分发消息

private boolean enqueueMessage(MessageQueue queue, Message msg,long uptimeMillis) {}//插入消息

3.MessageQueue:

        MessageQueue,即消息队列,用于存放通过Handler发送的消息,每个线程只有一个唯一的MessageQueue。MessageQueue虽然叫做消息队列,但是其内部实现其实是一个单链表。

(1)关键方法:

Message next() {}//查找消息

4.Looper:

        Looper,每个线程中MessageQueue的管家,用于不断地从MessageQueue之中获取消息,同样是每个线程只有一个Looper。主线程是有默认的Looper的,其它的线程是默认没有的,是需要自己创建的。

(1)关键方法:

public static void prepare() {}//创建一个Loop

public static void loop() {}//开启循环

二.具体处理流程:

 

三.注意点

1.Handler的执行跟创建Looper的线程相关,与创建Handler的线程无关,比如说在子线程创建一个Handler,但是与Handler相关联的Looper是主线程的,那么发送一个消息,最终的消息处理是在主线程中执行的。

四.比较好的博客等

网址1:轻松掌握Android Handler消息机制核心代码 - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值