Android线程间的通讯采用异步消息处理机制,主要由四部分组成,包括Message,Handler,MessageQueue和Looper。
一个线程只有一个Looper与Messagequeue,但可以有多个handler实例。
例:线程A发消息Message,线程B处理消息Message。
需要在线程B中新建一个Handler实例handler,在A线程中通过该handler发送消息到线程B中的Messagequeue中,
通过B中的Looper以及先进先出的原则取出该消息并处理消息,所以B中的handler实例必须要重载handleMessage方法。
对于Handler的使用,有如下值得自己注意的地方:
1、摘自http://blog.csdn.net/itachi85/article/details/8035333
Handler创建消息时首先查询消息池中是否有消息存在,如果有直接从消息池中取得,如果没有则重新初始化一个消息实例。使用消息池的好处是:消息不被使用时,并不作为垃圾回收,而是放入消息池,可供下次Handler创建消息时使用。消息池提高了消息对象的复用,减少系统垃圾回收的次数。消息的创建流程如图所示。
2、AsyncTask与handler使用起来的区别
时间: 2024-12-12 13:50:45