Android异步消息处理

本文详细介绍了Android中的异步消息处理机制,包括消息队列、Looper、Handler的工作原理。通过Looper.prepare()和Looper.loop()创建并运行消息队列,外部通过Handler发送消息,Looper不断读取消息并分发给相应的Handler处理。文章还深入剖析了MessageQueue、Looper和Handler的源码,揭示了消息的存储、调度和回调过程。
摘要由CSDN通过智能技术生成
异步消息简介

异步消息和线程的区别在于,线程执行完run()方法后,线程就结束了,而异步消息是在线程内部有一个消息队列,写一个死循环,
一直去消息队列里去取消息,然后根据消息类型处理相应的操作,如果取不到消息就一直在等待。

异步认为一般用于:任务需要常驻,比如处理用户交互的屏幕触摸事件处理;根据不同的消息类型处理不同的操作。

实现上就是:
1.每个异步任务要有一个消息队列;
2使用while(true)无限循环,读取消息,处理消息,执行回调函数等;
3,外部可以向队列发消息,消息队列注意线程安全。

Android中的异步消息

看下图,这个就是android中的实现图,
可以这样描述:
(1)在线程内部有一个或者多个Handler对象,外部程序通过Handler对象向线程发送异步消息,
消息由Handler对象传递到MessageQueue对象中。
(2)线程的主执行程序中从MessageQueue中读取消息,并回调Handler对象中的回到函数handleMessage()

注意:MessageQueue在线程内部只能包含一个;每个消息对应一个Handler对象


Looper,MessageQueue,Handler的源码介绍

先看下使用
-----------------------------------------------------------
Looper.java

Looper的作用有两点:
第一个是创建消息队列;
第二个就是无限循环读取消息队列里的消息。

创建消息队列

当创建消息队列的时候,需要首先调用Looper.prepare()静态函数。


第73行代码,在sThreadLocal里面检查一下当前线程是否已经调用过prepare()方法了,即检查一下和当前线程相关的Looper对象是否
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值