diff options
| author | 2015-01-21 19:01:52 +0800 | |
|---|---|---|
| committer | 2015-01-21 19:01:52 +0800 | |
| commit | 2d094e947759d4c3f331e5679667e5ca1b45c48f (patch) | |
| tree | e7d57b0e67c65b3aac6c440d4339cd420aa2f624 | |
| parent | e4a031e3c3b234ff91ce62e95b788eca7e00082c (diff) | |
[ActivityManager] No home activity resumed and cause
key dispatch ANR
Symptom:
In some scenario, there might have two home tasks
in the home stack. If the top home task was finishing
and expected to return to home stack, no activity
will resume.
Root Cause:
Unable to perform resumeHomeStackTask() because the
resumeTopActivityLocked() has been prevented to invoke
recursively.
Solution:
Just resume the next activity if already in home stack
Change-Id: I24ecbcac6cee4ddbd90cdd27c4f4915cffb9b354
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityStack.java | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index c03dbc29eb35..152f8d7fbd6f 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -1553,14 +1553,14 @@ final class ActivityStack { // Now the task above it has to return to the home task instead. final int taskNdx = mTaskHistory.indexOf(prevTask) + 1; mTaskHistory.get(taskNdx).setTaskToReturnTo(HOME_ACTIVITY_TYPE); - } else { - if (DEBUG_STATES && isOnHomeDisplay()) Slog.d(TAG, + } else if (!isOnHomeDisplay()) { + return false; + } else if (!isHomeStack()){ + if (DEBUG_STATES) Slog.d(TAG, "resumeTopActivityLocked: Launching home next"); - // Only resume home if on home display final int returnTaskType = prevTask == null || !prevTask.isOverHomeStack() ? HOME_ACTIVITY_TYPE : prevTask.getTaskToReturnTo(); - return isOnHomeDisplay() && - mStackSupervisor.resumeHomeStackTask(returnTaskType, prev); + return mStackSupervisor.resumeHomeStackTask(returnTaskType, prev); } } |