diff options
| author | 2013-06-24 18:38:10 +0000 | |
|---|---|---|
| committer | 2013-06-24 18:38:11 +0000 | |
| commit | 7a78b39428f86015a1cb1f59d65de455cd52350b (patch) | |
| tree | c1b070fe5a67c0880741216e2db8b9c7a7c494f6 | |
| parent | cf165a0ae00b6d4098de912545c1367aecf94c10 (diff) | |
| parent | f0ac5c87f2a4a7ee8148a7b8d02b55e439ab130c (diff) | |
Merge "Fix unnecessary and harmful task movement."
3 files changed, 22 insertions, 11 deletions
diff --git a/services/java/com/android/server/am/ActivityStackSupervisor.java b/services/java/com/android/server/am/ActivityStackSupervisor.java index a4fd7ad65474..4f305582bd7c 100644 --- a/services/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/java/com/android/server/am/ActivityStackSupervisor.java @@ -2170,29 +2170,31 @@ public final class ActivityStackSupervisor { for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = mStacks.get(stackNdx); final ActivityRecord r = stack.topRunningActivityLocked(null); + final ActivityState state = r == null ? ActivityState.DESTROYED : r.state; if (isFrontStack(stack)) { if (r == null) { Slog.e(TAG, "validateTop...: null top activity, stack=" + stack); } else { - if (stack.mPausingActivity != null) { + final ActivityRecord pausing = stack.mPausingActivity; + if (pausing != null && pausing == r) { Slog.e(TAG, "validateTop...: top stack has pausing activity r=" + r + - " state=" + r.state); + " state=" + state); } - if (r.state != ActivityState.INITIALIZING && - r.state != ActivityState.RESUMED) { + if (state != ActivityState.INITIALIZING && state != ActivityState.RESUMED) { Slog.e(TAG, "validateTop...: activity in front not resumed r=" + r + - " state=" + r.state); + " state=" + state); } } } else { - if (stack.mResumedActivity != null) { + final ActivityRecord resumed = stack.mResumedActivity; + if (resumed != null && resumed == r) { Slog.e(TAG, "validateTop...: back stack has resumed activity r=" + r + - " state=" + r.state); + " state=" + state); } - if (r != null && (r.state == ActivityState.INITIALIZING - || r.state == ActivityState.RESUMED)) { + if (r != null && (state == ActivityState.INITIALIZING + || state == ActivityState.RESUMED)) { Slog.e(TAG, "validateTop...: activity in back resumed r=" + r + - " state=" + r.state); + " state=" + state); } } } diff --git a/services/java/com/android/server/wm/TaskStack.java b/services/java/com/android/server/wm/TaskStack.java index 827958df1389..b43a7a16c8fe 100644 --- a/services/java/com/android/server/wm/TaskStack.java +++ b/services/java/com/android/server/wm/TaskStack.java @@ -16,7 +16,12 @@ package com.android.server.wm; +import static com.android.server.wm.WindowManagerService.DEBUG_TASK_MOVEMENT; +import static com.android.server.wm.WindowManagerService.TAG; + import android.graphics.Rect; +import android.os.Debug; +import android.util.Slog; import android.util.TypedValue; import static com.android.server.am.ActivityStackSupervisor.HOME_STACK_ID; @@ -88,6 +93,7 @@ public class TaskStack { * @param toTop Whether to add it to the top or bottom. */ boolean addTask(Task task, boolean toTop) { + if (DEBUG_TASK_MOVEMENT) Slog.d(TAG, "addTask: task=" + task + " toTop=" + toTop); mStackBox.makeDirty(); mTasks.add(toTop ? mTasks.size() : 0, task); task.mStack = this; @@ -95,11 +101,14 @@ public class TaskStack { } boolean moveTaskToTop(Task task) { + if (DEBUG_TASK_MOVEMENT) Slog.d(TAG, "moveTaskToTop: task=" + task + " Callers=" + + Debug.getCallers(6)); mTasks.remove(task); return addTask(task, true); } boolean moveTaskToBottom(Task task) { + if (DEBUG_TASK_MOVEMENT) Slog.d(TAG, "moveTaskToBottom: task=" + task); mTasks.remove(task); return addTask(task, false); } @@ -110,6 +119,7 @@ public class TaskStack { * @param task The Task to delete. */ void removeTask(Task task) { + if (DEBUG_TASK_MOVEMENT) Slog.d(TAG, "removeTask: task=" + task); mStackBox.makeDirty(); mTasks.remove(task); } diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index ab0590ea4c20..65ca00d9d64e 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -3777,7 +3777,6 @@ public class WindowManagerService extends IWindowManager.Stub } changed = mFocusedApp != newFocus; mFocusedApp = newFocus; - moveTaskToTop(newFocus.groupId); if (DEBUG_FOCUS) Slog.v(TAG, "Set focused app to: " + mFocusedApp + " moveFocusNow=" + moveFocusNow); if (changed) { |