Skip to content

Instantly share code, notes, and snippets.

@410063005
Created July 26, 2018 08:43
Show Gist options
  • Save 410063005/d67fe6977619811d2d02ccdeb45b27c9 to your computer and use it in GitHub Desktop.
Save 410063005/d67fe6977619811d2d02ccdeb45b27c9 to your computer and use it in GitHub Desktop.
用于打印当前MessageQueue中的所有Message
// usage: Choreographer.getInstance().postFrameCallback(new Helper());
public class Helper implements Choreographer.FrameCallback {
private static final String TAG = "IndexHelper";
private Field messagesField;
private Field nextField;
public Helper() {
try {
messagesField = MessageQueue.class.getDeclaredField("mMessages");
messagesField.setAccessible(true);
nextField = Message.class.getDeclaredField("next");
nextField.setAccessible(true);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
private void printMessages() {
MessageQueue queue = Looper.myQueue();
try {
Message msg = (Message) messagesField.get(queue);
StringBuilder sb = new StringBuilder();
while (msg != null) {
sb.append(msg.toString());
sb.append("\n");
msg = (Message) nextField.get(msg);
}
Log.i(TAG, sb.toString());
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
@Override
public void doFrame(long frameTimeNanos) {
Choreographer.getInstance().postFrameCallback(this);
printMessages();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment