Loading core/java/android/app/Activity.java +6 −22 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ import android.text.method.TextKeyListener; import android.util.AttributeSet; import android.util.EventLog; import android.util.Log; import android.util.PrintWriterPrinter; import android.util.Slog; import android.util.SparseArray; import android.view.ActionMode; Loading Loading @@ -4846,36 +4847,19 @@ public class Activity extends ContextThemeWrapper writer.println(mChangingConfigurations); writer.print(innerPrefix); writer.print("mCurrentConfig="); writer.println(mCurrentConfig); if (mLoaderManager != null) { writer.print(prefix); writer.print("Loader Manager "); writer.print(Integer.toHexString(System.identityHashCode(mLoaderManager))); writer.println(":"); mLoaderManager.dump(prefix + " ", fd, writer, args); } mFragments.dump(prefix, fd, writer, args); writer.print(prefix); writer.println("View Hierarchy:"); dumpViewHierarchy(prefix + " ", writer, getWindow().getDecorView()); } private void dumpViewHierarchy(String prefix, PrintWriter writer, View view) { writer.print(prefix); if (view == null) { writer.println("null"); return; } writer.println(view.toString()); if (!(view instanceof ViewGroup)) { return; } ViewGroup grp = (ViewGroup)view; final int N = grp.getChildCount(); if (N <= 0) { return; } prefix = prefix + " "; for (int i=0; i<N; i++) { dumpViewHierarchy(prefix, writer, grp.getChildAt(i)); } getWindow().getDecorView().getViewRootImpl().dump(prefix, fd, writer, args); mHandler.getLooper().dump(new PrintWriterPrinter(writer), prefix); } /** Loading core/java/android/os/Looper.java +4 −21 Original line number Diff line number Diff line Loading @@ -59,7 +59,6 @@ public final class Looper { final MessageQueue mQueue; final Thread mThread; volatile boolean mRun; private Printer mLogging; Loading Loading @@ -187,7 +186,6 @@ public final class Looper { private Looper(boolean quitAllowed) { mQueue = new MessageQueue(quitAllowed); mRun = true; mThread = Thread.currentThread(); } Loading Loading @@ -300,27 +298,12 @@ public final class Looper { } public void dump(Printer pw, String prefix) { pw = PrefixPrinter.create(pw, prefix); pw.println(this.toString()); pw.println("mRun=" + mRun); pw.println("mThread=" + mThread); pw.println("mQueue=" + ((mQueue != null) ? mQueue : "(null")); if (mQueue != null) { synchronized (mQueue) { long now = SystemClock.uptimeMillis(); Message msg = mQueue.mMessages; int n = 0; while (msg != null) { pw.println(" Message " + n + ": " + msg.toString(now)); n++; msg = msg.next; } pw.println("(Total messages: " + n + ")"); } } pw.println(prefix + toString()); mQueue.dump(pw, prefix + " "); } public String toString() { return "Looper{" + Integer.toHexString(System.identityHashCode(this)) + "}"; return "Looper (" + mThread.getName() + ", tid " + mThread.getId() + ") {" + Integer.toHexString(System.identityHashCode(this)) + "}"; } } core/java/android/os/Message.java +30 −18 Original line number Diff line number Diff line Loading @@ -428,18 +428,24 @@ public final class Message implements Parcelable { public Message() { } @Override public String toString() { return toString(SystemClock.uptimeMillis()); } String toString(long now) { StringBuilder b = new StringBuilder(); b.append("{ when="); TimeUtils.formatDuration(when - now, b); b.append("{ what="); if (target != null) { if (callback != null) { b.append(" callback="); b.append(callback.getClass().getName()); } else { b.append(" what="); b.append(what); b.append(" when="); TimeUtils.formatDuration(when-now, b); } if (arg1 != 0) { b.append(" arg1="); Loading @@ -456,8 +462,14 @@ public final class Message implements Parcelable { b.append(obj); } b.append(" }"); b.append(" target="); b.append(target.getClass().getName()); } else { b.append(" barrier="); b.append(arg1); } b.append(" }"); return b.toString(); } Loading core/java/android/os/MessageQueue.java +22 −3 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.os; import android.util.AndroidRuntimeException; import android.util.Log; import android.util.Printer; import java.util.ArrayList; Loading Loading @@ -252,6 +253,7 @@ public final class MessageQueue { synchronized (this) { final int token = mNextBarrierToken++; final Message msg = Message.obtain(); msg.when = when; msg.arg1 = token; Message prev = null; Loading Loading @@ -393,11 +395,15 @@ public final class MessageQueue { boolean isIdling() { synchronized (this) { return isIdlingLocked(); } } private boolean isIdlingLocked() { // If the loop is quitting then it must not be idling. // We can assume mPtr != 0 when mQuitting is false. return !mQuitting && nativeIsIdling(mPtr); } } void removeMessages(Handler h, int what, Object object) { if (h == null) { Loading Loading @@ -537,4 +543,17 @@ public final class MessageQueue { } } } void dump(Printer pw, String prefix) { synchronized (this) { long now = SystemClock.uptimeMillis(); int n = 0; for (Message msg = mMessages; msg != null; msg = msg.next) { pw.println(prefix + "Message " + n + ": " + msg.toString(now)); n++; } pw.println(prefix + "(Total messages: " + n + ", idling=" + isIdlingLocked() + ", quitting=" + mQuitting + ")"); } } } core/java/android/view/Choreographer.java +12 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,9 @@ import android.os.Message; import android.os.SystemClock; import android.os.SystemProperties; import android.util.Log; import android.util.TimeUtils; import java.io.PrintWriter; /** * Coordinates the timing of animations, input and drawing. Loading Loading @@ -256,6 +259,15 @@ public final class Choreographer { return delayMillis <= frameDelay ? 0 : delayMillis - frameDelay; } void dump(String prefix, PrintWriter writer) { String innerPrefix = prefix + " "; writer.print(prefix); writer.println("Choreographer:"); writer.print(innerPrefix); writer.print("mFrameScheduled="); writer.println(mFrameScheduled); writer.print(innerPrefix); writer.print("mLastFrameTime="); writer.println(TimeUtils.formatUptime(mLastFrameTimeNanos / 1000000)); } /** * Posts a callback to run on the next frame. * <p> Loading Loading
core/java/android/app/Activity.java +6 −22 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ import android.text.method.TextKeyListener; import android.util.AttributeSet; import android.util.EventLog; import android.util.Log; import android.util.PrintWriterPrinter; import android.util.Slog; import android.util.SparseArray; import android.view.ActionMode; Loading Loading @@ -4846,36 +4847,19 @@ public class Activity extends ContextThemeWrapper writer.println(mChangingConfigurations); writer.print(innerPrefix); writer.print("mCurrentConfig="); writer.println(mCurrentConfig); if (mLoaderManager != null) { writer.print(prefix); writer.print("Loader Manager "); writer.print(Integer.toHexString(System.identityHashCode(mLoaderManager))); writer.println(":"); mLoaderManager.dump(prefix + " ", fd, writer, args); } mFragments.dump(prefix, fd, writer, args); writer.print(prefix); writer.println("View Hierarchy:"); dumpViewHierarchy(prefix + " ", writer, getWindow().getDecorView()); } private void dumpViewHierarchy(String prefix, PrintWriter writer, View view) { writer.print(prefix); if (view == null) { writer.println("null"); return; } writer.println(view.toString()); if (!(view instanceof ViewGroup)) { return; } ViewGroup grp = (ViewGroup)view; final int N = grp.getChildCount(); if (N <= 0) { return; } prefix = prefix + " "; for (int i=0; i<N; i++) { dumpViewHierarchy(prefix, writer, grp.getChildAt(i)); } getWindow().getDecorView().getViewRootImpl().dump(prefix, fd, writer, args); mHandler.getLooper().dump(new PrintWriterPrinter(writer), prefix); } /** Loading
core/java/android/os/Looper.java +4 −21 Original line number Diff line number Diff line Loading @@ -59,7 +59,6 @@ public final class Looper { final MessageQueue mQueue; final Thread mThread; volatile boolean mRun; private Printer mLogging; Loading Loading @@ -187,7 +186,6 @@ public final class Looper { private Looper(boolean quitAllowed) { mQueue = new MessageQueue(quitAllowed); mRun = true; mThread = Thread.currentThread(); } Loading Loading @@ -300,27 +298,12 @@ public final class Looper { } public void dump(Printer pw, String prefix) { pw = PrefixPrinter.create(pw, prefix); pw.println(this.toString()); pw.println("mRun=" + mRun); pw.println("mThread=" + mThread); pw.println("mQueue=" + ((mQueue != null) ? mQueue : "(null")); if (mQueue != null) { synchronized (mQueue) { long now = SystemClock.uptimeMillis(); Message msg = mQueue.mMessages; int n = 0; while (msg != null) { pw.println(" Message " + n + ": " + msg.toString(now)); n++; msg = msg.next; } pw.println("(Total messages: " + n + ")"); } } pw.println(prefix + toString()); mQueue.dump(pw, prefix + " "); } public String toString() { return "Looper{" + Integer.toHexString(System.identityHashCode(this)) + "}"; return "Looper (" + mThread.getName() + ", tid " + mThread.getId() + ") {" + Integer.toHexString(System.identityHashCode(this)) + "}"; } }
core/java/android/os/Message.java +30 −18 Original line number Diff line number Diff line Loading @@ -428,18 +428,24 @@ public final class Message implements Parcelable { public Message() { } @Override public String toString() { return toString(SystemClock.uptimeMillis()); } String toString(long now) { StringBuilder b = new StringBuilder(); b.append("{ when="); TimeUtils.formatDuration(when - now, b); b.append("{ what="); if (target != null) { if (callback != null) { b.append(" callback="); b.append(callback.getClass().getName()); } else { b.append(" what="); b.append(what); b.append(" when="); TimeUtils.formatDuration(when-now, b); } if (arg1 != 0) { b.append(" arg1="); Loading @@ -456,8 +462,14 @@ public final class Message implements Parcelable { b.append(obj); } b.append(" }"); b.append(" target="); b.append(target.getClass().getName()); } else { b.append(" barrier="); b.append(arg1); } b.append(" }"); return b.toString(); } Loading
core/java/android/os/MessageQueue.java +22 −3 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.os; import android.util.AndroidRuntimeException; import android.util.Log; import android.util.Printer; import java.util.ArrayList; Loading Loading @@ -252,6 +253,7 @@ public final class MessageQueue { synchronized (this) { final int token = mNextBarrierToken++; final Message msg = Message.obtain(); msg.when = when; msg.arg1 = token; Message prev = null; Loading Loading @@ -393,11 +395,15 @@ public final class MessageQueue { boolean isIdling() { synchronized (this) { return isIdlingLocked(); } } private boolean isIdlingLocked() { // If the loop is quitting then it must not be idling. // We can assume mPtr != 0 when mQuitting is false. return !mQuitting && nativeIsIdling(mPtr); } } void removeMessages(Handler h, int what, Object object) { if (h == null) { Loading Loading @@ -537,4 +543,17 @@ public final class MessageQueue { } } } void dump(Printer pw, String prefix) { synchronized (this) { long now = SystemClock.uptimeMillis(); int n = 0; for (Message msg = mMessages; msg != null; msg = msg.next) { pw.println(prefix + "Message " + n + ": " + msg.toString(now)); n++; } pw.println(prefix + "(Total messages: " + n + ", idling=" + isIdlingLocked() + ", quitting=" + mQuitting + ")"); } } }
core/java/android/view/Choreographer.java +12 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,9 @@ import android.os.Message; import android.os.SystemClock; import android.os.SystemProperties; import android.util.Log; import android.util.TimeUtils; import java.io.PrintWriter; /** * Coordinates the timing of animations, input and drawing. Loading Loading @@ -256,6 +259,15 @@ public final class Choreographer { return delayMillis <= frameDelay ? 0 : delayMillis - frameDelay; } void dump(String prefix, PrintWriter writer) { String innerPrefix = prefix + " "; writer.print(prefix); writer.println("Choreographer:"); writer.print(innerPrefix); writer.print("mFrameScheduled="); writer.println(mFrameScheduled); writer.print(innerPrefix); writer.print("mLastFrameTime="); writer.println(TimeUtils.formatUptime(mLastFrameTimeNanos / 1000000)); } /** * Posts a callback to run on the next frame. * <p> Loading