当我查找 Handler.obtainMessage()的功能时,
我读到它从全局消息池中检索消息,而不是创建新的消息实例。这个全局消息池驻留在哪里?
它是以前创建的所有消息对象的集合吗?
答案 0 :(得分:3)
这只是意味着dalvik将消息存储在回收的对象池中。这些是从静态池线程创建和存储的:
private static Message sPool;
您无法直接访问它,但您仍然可以调用recyle等方法。
您可以查看源代码here。
至于确切地说:heap。
答案 1 :(得分:2)
答案 2 :(得分:1)
您可以查看来源:
Message obtain() :
http://androidxref.com/4.4.2_r1/xref/frameworks/base/core/java/android/os/Message.java#106
正在使用:
private static Message sPool;
一个静态类变量(实际上它是一个单独的链表),因此该池对您的应用程序来说是全局的。
在提供的链接中,您可以找到不再向目标池返回neede消息的public void recycle()
方法。