diff options
-rwxr-xr-x | services/java/com/android/server/am/ActivityStack.java | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java index 4d6727c..8f777f9 100755 --- a/services/java/com/android/server/am/ActivityStack.java +++ b/services/java/com/android/server/am/ActivityStack.java @@ -3370,6 +3370,7 @@ final class ActivityStack { boolean forceStopPackageLocked(String name, boolean doit, boolean evenPersistent, int userId) { boolean didSomething = false; TaskRecord lastTask = null; + ComponentName homeActivity = null; for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { final ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities; int numActivities = activities.size(); @@ -3388,6 +3389,14 @@ final class ActivityStack { } return true; } + if (r.isHomeActivity()) { + if (homeActivity != null && homeActivity.equals(r.realActivity)) { + Slog.i(TAG, "Skip force-stop again " + r); + continue; + } else { + homeActivity = r.realActivity; + } + } didSomething = true; Slog.i(TAG, " Force finishing activity " + r); if (samePackage) { |