什么是Android中的全局消息池?它在哪里存在于内存中?

时间:2014-02-12 14:08:46

标签: android handler message

当我查找 Handler.obtainMessage()的功能时,  我读到它从全局消息池中检索消息,而不是创建新的消息实例。这个全局消息池驻留在哪里?
它是以前创建的所有消息对象的集合吗?

3 个答案:

答案 0 :(得分:3)

这只是意味着dalvik将消息存储在回收的对象池中。这些是从静态池线程创建和存储的:

private static Message sPool;

您无法直接访问它,但您仍然可以调用recyle等方法。

您可以查看源代码here

至于确切地说:heap

答案 1 :(得分:2)

这是Message中的链接列表。列表的头部存储在static变量中。 Source

使用recycle()将消息放入池中。

答案 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()方法。