enforceCallerIsRecentsOrHasPermission(READ_FRAME_BUFFER, "getTaskSnapshot()");
final long ident = Binder.clearCallingIdentity();
try {
- final TaskRecord task;
- synchronized (mGlobalLock) {
- task = mRootActivityContainer.anyTaskForId(taskId,
- MATCH_TASK_IN_STACKS_OR_RECENT_TASKS);
- if (task == null) {
- Slog.w(TAG, "getTaskSnapshot: taskId=" + taskId + " not found");
- return null;
- }
- }
- // Don't call this while holding the lock as this operation might hit the disk.
- return task.getSnapshot(reducedResolution);
+ return getTaskSnapshot(taskId, reducedResolution, true /* restoreFromDisk */);
} finally {
Binder.restoreCallingIdentity(ident);
}
}
+ private ActivityManager.TaskSnapshot getTaskSnapshot(int taskId, boolean reducedResolution,
+ boolean restoreFromDisk) {
+ final TaskRecord task;
+ synchronized (mGlobalLock) {
+ task = mRootActivityContainer.anyTaskForId(taskId,
+ MATCH_TASK_IN_STACKS_OR_RECENT_TASKS);
+ if (task == null) {
+ Slog.w(TAG, "getTaskSnapshot: taskId=" + taskId + " not found");
+ return null;
+ }
+ }
+ // Don't call this while holding the lock as this operation might hit the disk.
+ return task.getSnapshot(reducedResolution, restoreFromDisk);
+ }
+
@Override
public void setDisablePreviewScreenshots(IBinder token, boolean disable) {
synchronized (mGlobalLock) {
}
@Override
- public ActivityManager.TaskSnapshot getTaskSnapshot(int taskId, boolean reducedResolution) {
- synchronized (mGlobalLock) {
- return ActivityTaskManagerService.this.getTaskSnapshot(taskId, reducedResolution);
- }
+ public ActivityManager.TaskSnapshot getTaskSnapshotNoRestore(int taskId,
+ boolean reducedResolution) {
+ return ActivityTaskManagerService.this.getTaskSnapshot(taskId, reducedResolution,
+ false /* restoreFromDisk */);
}
@Override
/**
* DO NOT HOLD THE ACTIVITY MANAGER LOCK WHEN CALLING THIS METHOD!
*/
- TaskSnapshot getSnapshot(boolean reducedResolution) {
+ TaskSnapshot getSnapshot(boolean reducedResolution, boolean restoreFromDisk) {
// TODO: Move this to {@link TaskWindowContainerController} once recent tasks are more
// synchronized between AM and WM.
- return mService.mWindowManager.getTaskSnapshot(taskId, userId, reducedResolution);
+ return mService.mWindowManager.getTaskSnapshot(taskId, userId, reducedResolution,
+ restoreFromDisk);
}
void touchActiveTime() {
return true;
}
- public TaskSnapshot getTaskSnapshot(int taskId, int userId, boolean reducedResolution) {
- return mTaskSnapshotController.getSnapshot(taskId, userId, true /* restoreFromDisk */,
+ public TaskSnapshot getTaskSnapshot(int taskId, int userId, boolean reducedResolution,
+ boolean restoreFromDisk) {
+ return mTaskSnapshotController.getSnapshot(taskId, userId, restoreFromDisk,
reducedResolution);
}