diff options
7 files changed, 15 insertions, 14 deletions
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index 31fe39027fb0..c96bd39eeffe 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -1507,7 +1507,7 @@ public class ActivityManager { throws SecurityException { try { return ActivityManagerNative.getDefault().getRecentTasks(maxNum, - flags, UserHandle.myUserId()); + flags, UserHandle.myUserId()).getList(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1532,7 +1532,7 @@ public class ActivityManager { throws SecurityException { try { return ActivityManagerNative.getDefault().getRecentTasks(maxNum, - flags, userId); + flags, userId).getList(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java index cee5646a73b3..9e9dabbb6aaf 100644 --- a/core/java/android/app/ActivityManagerNative.java +++ b/core/java/android/app/ActivityManagerNative.java @@ -683,10 +683,10 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM int maxNum = data.readInt(); int fl = data.readInt(); int userId = data.readInt(); - List<ActivityManager.RecentTaskInfo> list = getRecentTasks(maxNum, + ParceledListSlice<ActivityManager.RecentTaskInfo> list = getRecentTasks(maxNum, fl, userId); reply.writeNoException(); - reply.writeTypedList(list); + list.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); return true; } @@ -3741,7 +3741,7 @@ class ActivityManagerProxy implements IActivityManager reply.recycle(); return list; } - public List<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum, + public ParceledListSlice<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum, int flags, int userId) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); @@ -3751,8 +3751,8 @@ class ActivityManagerProxy implements IActivityManager data.writeInt(userId); mRemote.transact(GET_RECENT_TASKS_TRANSACTION, data, reply, 0); reply.readException(); - ArrayList<ActivityManager.RecentTaskInfo> list - = reply.createTypedArrayList(ActivityManager.RecentTaskInfo.CREATOR); + final ParceledListSlice<ActivityManager.RecentTaskInfo> list = ParceledListSlice.CREATOR + .createFromParcel(reply); data.recycle(); reply.recycle(); return list; diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java index 3f7ff0bede57..4570f1fdb206 100644 --- a/core/java/android/app/IActivityManager.java +++ b/core/java/android/app/IActivityManager.java @@ -136,7 +136,7 @@ public interface IActivityManager extends IInterface { ActivityManager.TaskDescription description, Bitmap thumbnail) throws RemoteException; public Point getAppTaskThumbnailSize() throws RemoteException; public List<RunningTaskInfo> getTasks(int maxNum, int flags) throws RemoteException; - public List<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum, + public ParceledListSlice<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum, int flags, int userId) throws RemoteException; public ActivityManager.TaskThumbnail getTaskThumbnail(int taskId) throws RemoteException; public List<RunningServiceInfo> getServices(int maxNum, int flags) throws RemoteException; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java index 8ee34a4cbd45..8530d667daa5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java @@ -512,7 +512,7 @@ public abstract class BaseStatusBar extends SystemUI implements recentTask = ActivityManagerNative.getDefault().getRecentTasks(1, ActivityManager.RECENT_WITH_EXCLUDED | ActivityManager.RECENT_INCLUDE_PROFILES, - mCurrentUserId); + mCurrentUserId).getList(); } catch (RemoteException e) { // Abandon hope activity manager not running. } diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 5893f9018631..82d9782c91d6 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -9078,7 +9078,8 @@ public final class ActivityManagerService extends ActivityManagerNative } @Override - public List<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum, int flags, int userId) { + public ParceledListSlice<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum, int flags, + int userId) { final int callingUid = Binder.getCallingUid(); userId = mUserController.handleIncomingUser(Binder.getCallingPid(), callingUid, userId, false, ALLOW_FULL_ONLY, "getRecentTasks", null); @@ -9094,7 +9095,7 @@ public final class ActivityManagerService extends ActivityManagerNative if (!isUserRunning(userId, ActivityManager.FLAG_AND_UNLOCKED)) { Slog.i(TAG, "user " + userId + " is still locked. Cannot load recents"); - return Collections.emptyList(); + return ParceledListSlice.emptyList(); } mRecentTasks.loadUserRecentsLocked(userId); @@ -9193,7 +9194,7 @@ public final class ActivityManagerService extends ActivityManagerNative maxNum--; } } - return res; + return new ParceledListSlice<>(res); } } diff --git a/services/core/java/com/android/server/media/MediaSessionStack.java b/services/core/java/com/android/server/media/MediaSessionStack.java index 61c320bced3c..cc007eff9075 100644 --- a/services/core/java/com/android/server/media/MediaSessionStack.java +++ b/services/core/java/com/android/server/media/MediaSessionStack.java @@ -81,7 +81,7 @@ public class MediaSessionStack { ActivityManager.RECENT_IGNORE_HOME_STACK_TASKS | ActivityManager.RECENT_IGNORE_UNAVAILABLE | ActivityManager.RECENT_INCLUDE_PROFILES | - ActivityManager.RECENT_WITH_EXCLUDED, record.getUserId()); + ActivityManager.RECENT_WITH_EXCLUDED, record.getUserId()).getList(); if (tasks != null && !tasks.isEmpty()) { ActivityManager.RecentTaskInfo recentTask = tasks.get(0); if (recentTask.baseIntent != null) diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java b/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java index 625fe7768990..bd9e6d19269b 100644 --- a/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java @@ -43,7 +43,7 @@ public class ActivityManagerTest extends AndroidTestCase { private void testTaskIdsForUser(int userId) throws RemoteException { List<ActivityManager.RecentTaskInfo> recentTasks = service.getRecentTasks( - 100, 0, userId); + 100, 0, userId).getList(); if(recentTasks != null) { for(ActivityManager.RecentTaskInfo recentTask : recentTasks) { int taskId = recentTask.persistentId; |