Android异步消息处理机制——handle与Looper,AsyncTask

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使用起来的区别

AsyncTask使用起来比较简单,轻量级,适合单个后台异步处理,而handler适合多个后台异步处理。

posted @ 2015-06-20 20:29  xingyi7  阅读(222)  评论(0编辑  收藏  举报