summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivitySnapshotController.java2
-rw-r--r--services/core/java/com/android/server/wm/BaseAppSnapshotPersister.java2
-rw-r--r--services/core/java/com/android/server/wm/SnapshotController.java13
-rw-r--r--services/core/java/com/android/server/wm/Task.java2
-rw-r--r--services/core/java/com/android/server/wm/TaskSnapshotController.java4
-rw-r--r--services/core/java/com/android/server/wm/TaskSnapshotPersister.java5
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterLoaderTest.java2
7 files changed, 22 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/wm/ActivitySnapshotController.java b/services/core/java/com/android/server/wm/ActivitySnapshotController.java
index 01b8bf794dae..52ab9b855c7c 100644
--- a/services/core/java/com/android/server/wm/ActivitySnapshotController.java
+++ b/services/core/java/com/android/server/wm/ActivitySnapshotController.java
@@ -539,7 +539,7 @@ class ActivitySnapshotController extends AbsAppSnapshotController<ActivityRecord
if (usf != null) {
mUserSavedFiles.get(userId).remove(code);
mSavedFilesInOrder.remove(usf);
- mPersister.removeSnap(code, userId);
+ mPersister.removeSnapshot(code, userId);
}
}
diff --git a/services/core/java/com/android/server/wm/BaseAppSnapshotPersister.java b/services/core/java/com/android/server/wm/BaseAppSnapshotPersister.java
index d604402e3e1e..5db02dff8351 100644
--- a/services/core/java/com/android/server/wm/BaseAppSnapshotPersister.java
+++ b/services/core/java/com/android/server/wm/BaseAppSnapshotPersister.java
@@ -58,7 +58,7 @@ class BaseAppSnapshotPersister {
* @param id The id of task that has been removed.
* @param userId The id of the user the task belonged to.
*/
- void removeSnap(int id, int userId) {
+ void removeSnapshot(int id, int userId) {
synchronized (mLock) {
mSnapshotPersistQueue.sendToQueueLocked(mSnapshotPersistQueue
.createDeleteWriteQueueItem(id, userId, mPersistInfoProvider));
diff --git a/services/core/java/com/android/server/wm/SnapshotController.java b/services/core/java/com/android/server/wm/SnapshotController.java
index 2e7ff7a6b9b8..951815035e73 100644
--- a/services/core/java/com/android/server/wm/SnapshotController.java
+++ b/services/core/java/com/android/server/wm/SnapshotController.java
@@ -26,6 +26,7 @@ import static android.view.WindowManager.TRANSIT_TO_FRONT;
import android.os.Trace;
import android.view.WindowManager;
+import android.window.TaskSnapshot;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -126,6 +127,18 @@ class SnapshotController {
}
mActivitySnapshotController.handleTransitionFinish(windows);
mActivitySnapshotController.endSnapshotProcess();
+ // Remove task snapshot if it is visible at the end of transition.
+ for (int i = changeInfos.size() - 1; i >= 0; --i) {
+ final WindowContainer wc = changeInfos.get(i).mContainer;
+ final Task task = wc.asTask();
+ if (task != null && wc.isVisibleRequested()) {
+ final TaskSnapshot snapshot = mTaskSnapshotController.getSnapshot(task.mTaskId,
+ task.mUserId, false /* restoreFromDisk */, false /* isLowResolution */);
+ if (snapshot != null) {
+ mTaskSnapshotController.removeAndDeleteSnapshot(task.mTaskId, task.mUserId);
+ }
+ }
+ }
Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
}
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 4922e9028ed9..71dbd29a0410 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -1333,7 +1333,7 @@ class Task extends TaskFragment {
clearRootProcess();
- mAtmService.mWindowManager.mTaskSnapshotController.notifyTaskRemovedFromRecents(
+ mAtmService.mWindowManager.mTaskSnapshotController.removeAndDeleteSnapshot(
mTaskId, mUserId);
}
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java
index 2b12e7497233..d8e18e47fa89 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotController.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java
@@ -284,9 +284,9 @@ class TaskSnapshotController extends AbsAppSnapshotController<Task, TaskSnapshot
}
}
- void notifyTaskRemovedFromRecents(int taskId, int userId) {
+ void removeAndDeleteSnapshot(int taskId, int userId) {
mCache.onIdRemoved(taskId);
- mPersister.onTaskRemovedFromRecents(taskId, userId);
+ mPersister.removeSnapshot(taskId, userId);
}
void removeSnapshotCache(int taskId) {
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotPersister.java b/services/core/java/com/android/server/wm/TaskSnapshotPersister.java
index 3e8c0177b3b3..233daadfc496 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotPersister.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotPersister.java
@@ -67,10 +67,11 @@ class TaskSnapshotPersister extends BaseAppSnapshotPersister {
* @param taskId The id of task that has been removed.
* @param userId The id of the user the task belonged to.
*/
- void onTaskRemovedFromRecents(int taskId, int userId) {
+ @Override
+ void removeSnapshot(int taskId, int userId) {
synchronized (mLock) {
mPersistedTaskIdsSinceLastRemoveObsolete.remove(taskId);
- super.removeSnap(taskId, userId);
+ super.removeSnapshot(taskId, userId);
}
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterLoaderTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterLoaderTest.java
index 13a4c1142574..8fecbb9d4dec 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterLoaderTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterLoaderTest.java
@@ -96,7 +96,7 @@ public class TaskSnapshotPersisterLoaderTest extends TaskSnapshotPersisterTestBa
@Test
public void testTaskRemovedFromRecents() {
mPersister.persistSnapshot(1, mTestUserId, createSnapshot());
- mPersister.onTaskRemovedFromRecents(1, mTestUserId);
+ mPersister.removeSnapshot(1, mTestUserId);
mSnapshotPersistQueue.waitForQueueEmpty();
assertFalse(new File(FILES_DIR.getPath() + "/snapshots/1.proto").exists());
assertFalse(new File(FILES_DIR.getPath() + "/snapshots/1.jpg").exists());