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),并没有回收消息对象本身,因此消息被回收后,不能直接操作该消息。