summaryrefslogtreecommitdiffstats
path: root/services/core/java/com/android/server/am/ActivityManagerService.java
diff options
context:
space:
mode:
Diffstat (limited to 'services/core/java/com/android/server/am/ActivityManagerService.java')
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java47
1 files changed, 11 insertions, 36 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 45367a8..56be936 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -270,7 +270,10 @@ public final class ActivityManagerService extends ActivityManagerNative
static final boolean IS_USER_BUILD = "user".equals(Build.TYPE);
// Maximum number of recent tasks that we can remember.
- static final int MAX_RECENT_TASKS = ActivityManager.isLowRamDeviceStatic() ? 10 : 200;
+ static final int MAX_RECENT_TASKS = ActivityManager.isLowRamDeviceStatic() ? 100 : 200;
+
+ // Maximum number recent bitmaps to keep in memory.
+ static final int MAX_RECENT_BITMAPS = 5;
// Amount of time after a call to stopAppSwitches() during which we will
// prevent further untrusted switches from happening.
@@ -3601,6 +3604,9 @@ public final class ActivityManagerService extends ActivityManagerNative
if (task.userId != tr.userId) {
continue;
}
+ if (i > MAX_RECENT_BITMAPS) {
+ tr.freeLastThumbnail();
+ }
final Intent trIntent = tr.intent;
if ((task.affinity == null || !task.affinity.equals(tr.affinity)) &&
(intent == null || !intent.filterEquals(trIntent))) {
@@ -7348,26 +7354,13 @@ public final class ActivityManagerService extends ActivityManagerNative
}
@Override
- public ActivityManager.TaskThumbnails getTaskThumbnails(int id) {
+ public ActivityManager.TaskThumbnail getTaskThumbnail(int id) {
synchronized (this) {
enforceCallingPermission(android.Manifest.permission.READ_FRAME_BUFFER,
- "getTaskThumbnails()");
+ "getTaskThumbnail()");
TaskRecord tr = recentTaskForIdLocked(id);
if (tr != null) {
- return tr.getTaskThumbnailsLocked();
- }
- }
- return null;
- }
-
- @Override
- public Bitmap getTaskTopThumbnail(int id) {
- synchronized (this) {
- enforceCallingPermission(android.Manifest.permission.READ_FRAME_BUFFER,
- "getTaskTopThumbnail()");
- TaskRecord tr = recentTaskForIdLocked(id);
- if (tr != null) {
- return tr.getTaskTopThumbnailLocked();
+ return tr.getTaskThumbnailLocked();
}
}
return null;
@@ -7384,24 +7377,6 @@ public final class ActivityManagerService extends ActivityManagerNative
}
}
- @Override
- public boolean removeSubTask(int taskId, int subTaskIndex) {
- synchronized (this) {
- enforceCallingPermission(android.Manifest.permission.REMOVE_TASKS,
- "removeSubTask()");
- long ident = Binder.clearCallingIdentity();
- try {
- TaskRecord tr = recentTaskForIdLocked(taskId);
- if (tr != null) {
- return tr.removeTaskActivitiesLocked(subTaskIndex, true) != null;
- }
- return false;
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
- }
-
private void killUnneededProcessLocked(ProcessRecord pr, String reason) {
if (!pr.killedByAm) {
Slog.i(TAG, "Killing " + pr.toShortString() + " (adj " + pr.setAdj + "): " + reason);
@@ -7473,7 +7448,7 @@ public final class ActivityManagerService extends ActivityManagerNative
private boolean removeTaskByIdLocked(int taskId, int flags) {
TaskRecord tr = recentTaskForIdLocked(taskId);
if (tr != null) {
- tr.removeTaskActivitiesLocked(-1, false);
+ tr.removeTaskActivitiesLocked();
cleanUpRemovedTaskLocked(tr, flags);
if (tr.isPersistable) {
notifyTaskPersisterLocked(tr, true);