Loading core/java/android/app/ActivityThread.java +23 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,7 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; import java.net.InetAddress; import java.text.DateFormat; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; import java.util.List; Loading Loading @@ -220,6 +221,9 @@ public final class ActivityThread extends ClientTransactionHandler { // Whether to invoke an activity callback after delivering new configuration. private static final boolean REPORT_TO_ACTIVITY = true; // Maximum number of recent tokens to maintain for debugging purposes private static final int MAX_RECENT_TOKENS = 10; /** * Denotes an invalid sequence number corresponding to a process state change. */ Loading Loading @@ -252,6 +256,8 @@ public final class ActivityThread extends ClientTransactionHandler { final H mH = new H(); final Executor mExecutor = new HandlerExecutor(mH); final ArrayMap<IBinder, ActivityClientRecord> mActivities = new ArrayMap<>(); final ArrayDeque<Integer> mRecentTokens = new ArrayDeque<>(); // List of new activities (via ActivityRecord.nextIdle) that should // be reported when next we idle. ActivityClientRecord mNewActivities = null; Loading Loading @@ -2168,6 +2174,18 @@ public final class ActivityThread extends ClientTransactionHandler { pw.println(String.format(format, objs)); } @Override public void dump(PrintWriter pw, String prefix) { pw.println(prefix + "mActivities:"); for (ArrayMap.Entry<IBinder, ActivityClientRecord> entry : mActivities.entrySet()) { pw.println(prefix + " [token:" + entry.getKey().hashCode() + " record:" + entry.getValue().toString() + "]"); } pw.println(prefix + "mRecentTokens:" + mRecentTokens); } public static void dumpMemInfoTable(PrintWriter pw, Debug.MemoryInfo memInfo, boolean checkin, boolean dumpFullInfo, boolean dumpDalvik, boolean dumpSummaryOnly, int pid, String processName, Loading Loading @@ -2852,6 +2870,11 @@ public final class ActivityThread extends ClientTransactionHandler { r.setState(ON_CREATE); mActivities.put(r.token, r); mRecentTokens.push(r.token.hashCode()); if (mRecentTokens.size() > MAX_RECENT_TOKENS) { mRecentTokens.removeLast(); } } catch (SuperNotCalledException e) { throw e; Loading core/java/android/app/ClientTransactionHandler.java +8 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.os.IBinder; import com.android.internal.content.ReferrerIntent; import java.io.PrintWriter; import java.util.List; /** Loading Loading @@ -121,4 +122,11 @@ public abstract class ClientTransactionHandler { * provided token. */ public abstract ActivityThread.ActivityClientRecord getActivityClient(IBinder token); /** * Debugging output. * @param pw {@link PrintWriter} to write logs to. * @param prefix Prefix to prepend to output. */ public abstract void dump(PrintWriter pw, String prefix); } core/java/android/app/servertransaction/ActivityLifecycleItem.java +38 −0 Original line number Diff line number Diff line Loading @@ -17,7 +17,9 @@ package android.app.servertransaction; import android.annotation.IntDef; import android.os.Parcel; import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Loading @@ -26,6 +28,7 @@ import java.lang.annotation.RetentionPolicy; * @hide */ public abstract class ActivityLifecycleItem extends ClientTransactionItem { private String mDescription; @IntDef(prefix = { "UNDEFINED", "PRE_", "ON_" }, value = { UNDEFINED, Loading Loading @@ -53,4 +56,39 @@ public abstract class ActivityLifecycleItem extends ClientTransactionItem { /** A final lifecycle state that an activity should reach. */ @LifecycleState public abstract int getTargetState(); protected ActivityLifecycleItem() { } protected ActivityLifecycleItem(Parcel in) { mDescription = in.readString(); } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(mDescription); } /** * Sets a description that can be retrieved later for debugging purposes. * @param description Description to set. * @return The {@link ActivityLifecycleItem}. */ public ActivityLifecycleItem setDescription(String description) { mDescription = description; return this; } /** * Retrieves description if set through {@link #setDescription(String)}. */ public String getDescription() { return mDescription; } void dump(PrintWriter pw, String prefix) { pw.println(prefix + "target state:" + getTargetState()); pw.println(prefix + "description: " + mDescription); } } core/java/android/app/servertransaction/ClientTransaction.java +9 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.os.RemoteException; import com.android.internal.annotations.VisibleForTesting; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.Objects; Loading Loading @@ -237,4 +238,12 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { result = 31 * result + Objects.hashCode(mLifecycleStateRequest); return result; } void dump(PrintWriter pw, String prefix) { pw.println(prefix + "mActivityToken:" + mActivityToken.hashCode()); pw.println(prefix + "mLifecycleStateRequest:"); if (mLifecycleStateRequest != null) { mLifecycleStateRequest.dump(pw, prefix + " "); } } } core/java/android/app/servertransaction/DestroyActivityItem.java +2 −0 Original line number Diff line number Diff line Loading @@ -76,12 +76,14 @@ public class DestroyActivityItem extends ActivityLifecycleItem { /** Write to Parcel. */ @Override public void writeToParcel(Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeBoolean(mFinished); dest.writeInt(mConfigChanges); } /** Read from Parcel. */ private DestroyActivityItem(Parcel in) { super(in); mFinished = in.readBoolean(); mConfigChanges = in.readInt(); } Loading Loading
core/java/android/app/ActivityThread.java +23 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,7 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; import java.net.InetAddress; import java.text.DateFormat; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; import java.util.List; Loading Loading @@ -220,6 +221,9 @@ public final class ActivityThread extends ClientTransactionHandler { // Whether to invoke an activity callback after delivering new configuration. private static final boolean REPORT_TO_ACTIVITY = true; // Maximum number of recent tokens to maintain for debugging purposes private static final int MAX_RECENT_TOKENS = 10; /** * Denotes an invalid sequence number corresponding to a process state change. */ Loading Loading @@ -252,6 +256,8 @@ public final class ActivityThread extends ClientTransactionHandler { final H mH = new H(); final Executor mExecutor = new HandlerExecutor(mH); final ArrayMap<IBinder, ActivityClientRecord> mActivities = new ArrayMap<>(); final ArrayDeque<Integer> mRecentTokens = new ArrayDeque<>(); // List of new activities (via ActivityRecord.nextIdle) that should // be reported when next we idle. ActivityClientRecord mNewActivities = null; Loading Loading @@ -2168,6 +2174,18 @@ public final class ActivityThread extends ClientTransactionHandler { pw.println(String.format(format, objs)); } @Override public void dump(PrintWriter pw, String prefix) { pw.println(prefix + "mActivities:"); for (ArrayMap.Entry<IBinder, ActivityClientRecord> entry : mActivities.entrySet()) { pw.println(prefix + " [token:" + entry.getKey().hashCode() + " record:" + entry.getValue().toString() + "]"); } pw.println(prefix + "mRecentTokens:" + mRecentTokens); } public static void dumpMemInfoTable(PrintWriter pw, Debug.MemoryInfo memInfo, boolean checkin, boolean dumpFullInfo, boolean dumpDalvik, boolean dumpSummaryOnly, int pid, String processName, Loading Loading @@ -2852,6 +2870,11 @@ public final class ActivityThread extends ClientTransactionHandler { r.setState(ON_CREATE); mActivities.put(r.token, r); mRecentTokens.push(r.token.hashCode()); if (mRecentTokens.size() > MAX_RECENT_TOKENS) { mRecentTokens.removeLast(); } } catch (SuperNotCalledException e) { throw e; Loading
core/java/android/app/ClientTransactionHandler.java +8 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.os.IBinder; import com.android.internal.content.ReferrerIntent; import java.io.PrintWriter; import java.util.List; /** Loading Loading @@ -121,4 +122,11 @@ public abstract class ClientTransactionHandler { * provided token. */ public abstract ActivityThread.ActivityClientRecord getActivityClient(IBinder token); /** * Debugging output. * @param pw {@link PrintWriter} to write logs to. * @param prefix Prefix to prepend to output. */ public abstract void dump(PrintWriter pw, String prefix); }
core/java/android/app/servertransaction/ActivityLifecycleItem.java +38 −0 Original line number Diff line number Diff line Loading @@ -17,7 +17,9 @@ package android.app.servertransaction; import android.annotation.IntDef; import android.os.Parcel; import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Loading @@ -26,6 +28,7 @@ import java.lang.annotation.RetentionPolicy; * @hide */ public abstract class ActivityLifecycleItem extends ClientTransactionItem { private String mDescription; @IntDef(prefix = { "UNDEFINED", "PRE_", "ON_" }, value = { UNDEFINED, Loading Loading @@ -53,4 +56,39 @@ public abstract class ActivityLifecycleItem extends ClientTransactionItem { /** A final lifecycle state that an activity should reach. */ @LifecycleState public abstract int getTargetState(); protected ActivityLifecycleItem() { } protected ActivityLifecycleItem(Parcel in) { mDescription = in.readString(); } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(mDescription); } /** * Sets a description that can be retrieved later for debugging purposes. * @param description Description to set. * @return The {@link ActivityLifecycleItem}. */ public ActivityLifecycleItem setDescription(String description) { mDescription = description; return this; } /** * Retrieves description if set through {@link #setDescription(String)}. */ public String getDescription() { return mDescription; } void dump(PrintWriter pw, String prefix) { pw.println(prefix + "target state:" + getTargetState()); pw.println(prefix + "description: " + mDescription); } }
core/java/android/app/servertransaction/ClientTransaction.java +9 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.os.RemoteException; import com.android.internal.annotations.VisibleForTesting; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.Objects; Loading Loading @@ -237,4 +238,12 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { result = 31 * result + Objects.hashCode(mLifecycleStateRequest); return result; } void dump(PrintWriter pw, String prefix) { pw.println(prefix + "mActivityToken:" + mActivityToken.hashCode()); pw.println(prefix + "mLifecycleStateRequest:"); if (mLifecycleStateRequest != null) { mLifecycleStateRequest.dump(pw, prefix + " "); } } }
core/java/android/app/servertransaction/DestroyActivityItem.java +2 −0 Original line number Diff line number Diff line Loading @@ -76,12 +76,14 @@ public class DestroyActivityItem extends ActivityLifecycleItem { /** Write to Parcel. */ @Override public void writeToParcel(Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeBoolean(mFinished); dest.writeInt(mConfigChanges); } /** Read from Parcel. */ private DestroyActivityItem(Parcel in) { super(in); mFinished = in.readBoolean(); mConfigChanges = in.readInt(); } Loading