diff options
| author | Louis Chang <louischang@google.com> | 2020-08-10 16:59:05 +0800 |
|---|---|---|
| committer | Louis Chang <louischang@google.com> | 2020-09-03 10:13:57 +0800 |
| commit | bfc9e5936118cdb6de6fa65261f849e837053b7c (patch) | |
| tree | 6c1ccd6799081121fa0849c556e24e9133b6d6c8 /core/java/android/app/ActivityTaskManager.java | |
| parent | f52bdb9c834a72ba4df535d63938ba7813c5b616 (diff) | |
Replace StackInfo with TaskInfo
Bug: 148895075
Test: existing test pass
Change-Id: I97a12397b61f4ee67810dc4ae0423de07d4befa8
Diffstat (limited to 'core/java/android/app/ActivityTaskManager.java')
| -rw-r--r-- | core/java/android/app/ActivityTaskManager.java | 115 |
1 files changed, 94 insertions, 21 deletions
diff --git a/core/java/android/app/ActivityTaskManager.java b/core/java/android/app/ActivityTaskManager.java index 4283d7ad2a62..3e4d5eee34fe 100644 --- a/core/java/android/app/ActivityTaskManager.java +++ b/core/java/android/app/ActivityTaskManager.java @@ -29,6 +29,8 @@ import android.graphics.Rect; import android.os.Build; import android.os.Handler; import android.os.IBinder; +import android.os.Parcel; +import android.os.Parcelable; import android.os.RemoteException; import android.os.ServiceManager; import android.util.DisplayMetrics; @@ -391,27 +393,6 @@ public class ActivityTaskManager { } /** - * List all activity stacks information. - */ - @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) - public String listAllStacks() { - final List<ActivityManager.StackInfo> stacks; - try { - stacks = getService().getAllStackInfos(); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - - final StringBuilder sb = new StringBuilder(); - if (stacks != null) { - for (ActivityManager.StackInfo info : stacks) { - sb.append(info).append("\n"); - } - } - return sb.toString(); - } - - /** * Clears launch params for the given package. * @param packageNames the names of the packages of which the launch params are to be cleared */ @@ -468,4 +449,96 @@ public class ActivityTaskManager { final Configuration config = context.getResources().getConfiguration(); return currentUiModeSupportsErrorDialogs(config); } + + /** + * Information you can retrieve about a root task in the system. + * @hide + */ + public static class RootTaskInfo extends TaskInfo implements Parcelable { + // TODO(b/148895075): Move some of the fields to TaskInfo. + public Rect bounds = new Rect(); + public int[] childTaskIds; + public String[] childTaskNames; + public Rect[] childTaskBounds; + public int[] childTaskUserIds; + public boolean visible; + // Index of the stack in the display's stack list, can be used for comparison of stack order + public int position; + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeTypedObject(bounds, flags); + dest.writeIntArray(childTaskIds); + dest.writeStringArray(childTaskNames); + dest.writeTypedArray(childTaskBounds, flags); + dest.writeIntArray(childTaskUserIds); + dest.writeInt(visible ? 1 : 0); + dest.writeInt(position); + super.writeToParcel(dest, flags); + } + + @Override + void readFromParcel(Parcel source) { + bounds = source.readTypedObject(Rect.CREATOR); + childTaskIds = source.createIntArray(); + childTaskNames = source.createStringArray(); + childTaskBounds = source.createTypedArray(Rect.CREATOR); + childTaskUserIds = source.createIntArray(); + visible = source.readInt() > 0; + position = source.readInt(); + super.readFromParcel(source); + } + + public static final @NonNull Creator<RootTaskInfo> CREATOR = new Creator<>() { + @Override + public RootTaskInfo createFromParcel(Parcel source) { + return new RootTaskInfo(source); + } + + @Override + public RootTaskInfo[] newArray(int size) { + return new RootTaskInfo[size]; + } + }; + + public RootTaskInfo() { + } + + private RootTaskInfo(Parcel source) { + readFromParcel(source); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(256); + sb.append("RootTask id="); sb.append(taskId); + sb.append(" bounds="); sb.append(bounds.toShortString()); + sb.append(" displayId="); sb.append(displayId); + sb.append(" userId="); sb.append(userId); + sb.append("\n"); + + sb.append(" configuration="); sb.append(configuration); + sb.append("\n"); + + for (int i = 0; i < childTaskIds.length; ++i) { + sb.append(" taskId="); sb.append(childTaskIds[i]); + sb.append(": "); sb.append(childTaskNames[i]); + if (childTaskBounds != null) { + sb.append(" bounds="); sb.append(childTaskBounds[i].toShortString()); + } + sb.append(" userId=").append(childTaskUserIds[i]); + sb.append(" visible=").append(visible); + if (topActivity != null) { + sb.append(" topActivity=").append(topActivity); + } + sb.append("\n"); + } + return sb.toString(); + } + } } |
