7.4.4 回收消息并更新消息池
消息处理后,需要将其回收并重新放置到消息池中,这部分功能由Message的recycle方法完成,代码如下:
public void recycle(){
clearForRecycle();//重置消息的数据,例如将flags、what、when等成员变量置为0
synchronized(sPoolSync){
if(sPoolSize<MAX_POOL_SIZE){
next=sPool;
sPool=this;
sPoolSize++;
}
}
}
回收消息的过程只是将消息的成员变量清空(置为0),并没有回收消息对象本身,因此消息被回收后,不能直接操作该消息。