Android中的Message Pool实现
来源:互联网 发布:淘宝卖家未发货前退款 编辑:程序博客网 时间:2024/05/18 00:04
为了避免对象频繁创建销毁带来的开销,可以采用一个pool来维护这些对象,对象使用后可重新放到pool中被重新使用。
Message是一个被频繁使用的对象,因此Message提供了一个message pool。下面是message pool的实现。
obtain方法用来从pool中获取一个Message对象,一旦消息被处理后可以调用recycle方法将该对象放入pool。即使message是通过new方式创建的,仍然可以放入pool中进行回收。
下面的pool实际上是一个stack,obtain是pop, recycle是pop,只是比较简单,仅仅通过一个可以链到下一个message的message对象记录栈顶。
public final class Message implements Parcelable {
// memebers
public int what;
…
/*package*/ Message next;
private static Object mPoolSync = new Object();
private static Message mPool;
private static int mPoolSize = 0;
private static final int MAX_POOL_SIZE = 10;
public Message() {
}
public static Message obtain() {
synchronized (mPoolSync) {
if (mPool != null) {
Message m = mPool;
mPool = m.next;
m.next = null;
return m;
}
}
return new Message();
}
public void recycle() {
synchronized (mPoolSync) {
if (mPoolSize < MAX_POOL_SIZE) {
clearForRecycle();
next = mPool;
mPool = this;
}
}
}
/*package*/ void clearForRecycle() {
what = 0;
…
}
…
}
- Android中的Message Pool实现
- Code Fragment-Message Pool的实现与处理
- Code Fragment-Message Pool的实现与处理
- Message(Message Pool)源码分析
- android中的message应用
- Android中的Message
- Android中的Message机制
- Android的Message Pool是个什么鬼,Message Pool会否引起OOM——源码角度分析
- Android中的Message类以及Java对象池的实现
- 理解Android中的Handler/Message
- Android中的Looper , Handler , Message
- Android的Message Pool是个什么鬼——源码角度分析 .
- android中handler,message,message queue,looper底层实现机制
- android中的message 应用与机制
- Android中的Handler、Looper、Message等
- Android中的Looper类&Handler &Message
- Android中的Handler,Looper,Message机制
- 详解Android中的Looper,Handler和Message
- CEdit 响应 ctrl+a ctrl+c ctrl+v ctrl+x
- 开开心心学算法--Binary String Matching
- Android中setcontentview中参数无法自动弹出自建的xml文件名
- ubuntu和宿主机windows共享文件夹
- Android之怎么使用SQLite数据库(增、删、改、查、分页等)以及ListView显示数据
- Android中的Message Pool实现
- ch01 UNIX基础知识
- 17个新手常见Python运行时错误
- 时间工具类
- 改变进程和线程的优先级(Windows)
- 自定义屏幕输入框使用日历选择帮助
- jQuery在异步请求数据返回后,调用$("selector").html(data.content);之后因为一些特殊字符或者',"不能显示内容的问题解决办法
- android屏蔽返回键
- 计税函数版