6
votes

Quel est le piscine mondial des messages à Android? Où réside-t-il en mémoire?

Quand je cherchais la fonctionnalité de Handler.ObtainMessage () , J'ai lu que cela récupère un message de Global Message Pool au lieu de créer une nouvelle instance de message. Où réside ce pool de messages mondial?
Est-ce une collection de tous les objets de message créés auparavant?


0 commentaires

3 Réponses :


2
votes

C'est une liste liée dans message . La tête de la liste est stockée dans une variable statique . source . < / p>

Les messages sont mis à la piscine avec recycler () .


0 commentaires

1
votes

Vous pouvez regarder dans des sources: xxx

http://androidxref.com/4.4.2_r1/xref/frameworks/base/core/java/android/os/message.java#106

qui utilise: xxx

une variable de classe statique (il s'agit d'une liste liée unique), ce pool est donc global à votre application.

et dans la liaison fournie, vous pouvez trouver recyclage du vidité public () méthode qui ne renvoie plus de message au-dessus de la piscine.


0 commentaires

3
votes

Cela signifie simplement que Dalvik stocke les messages dans un pool de Recyclé des objets forts>. Ceux-ci sont créés et stockés à partir d'un fil de piscine statique:

private static Message sPool;


0 commentaires