Merge "Fix activity not launching from recents after it was dismissed."
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index e4a6f3c..26ece54 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -3484,27 +3484,29 @@
Watchdog.getInstance().processStarted(app.processName, startResult.pid);
}
- checkTime(startTime, "startProcess: building log message");
- StringBuilder buf = mStringBuilder;
- buf.setLength(0);
- buf.append("Start proc ");
- buf.append(startResult.pid);
- buf.append(':');
- buf.append(app.processName);
- buf.append('/');
- UserHandle.formatUid(buf, uid);
- if (!isActivityProcess) {
- buf.append(" [");
- buf.append(entryPoint);
- buf.append("]");
+ if (DEBUG_PROCESSES) {
+ checkTime(startTime, "startProcess: building log message");
+ StringBuilder buf = mStringBuilder;
+ buf.setLength(0);
+ buf.append("Start proc ");
+ buf.append(startResult.pid);
+ buf.append(':');
+ buf.append(app.processName);
+ buf.append('/');
+ UserHandle.formatUid(buf, uid);
+ if (!isActivityProcess) {
+ buf.append(" [");
+ buf.append(entryPoint);
+ buf.append("]");
+ }
+ buf.append(" for ");
+ buf.append(hostingType);
+ if (hostingNameStr != null) {
+ buf.append(" ");
+ buf.append(hostingNameStr);
+ }
+ Slog.i(TAG, buf.toString());
}
- buf.append(" for ");
- buf.append(hostingType);
- if (hostingNameStr != null) {
- buf.append(" ");
- buf.append(hostingNameStr);
- }
- Slog.i(TAG, buf.toString());
app.setPid(startResult.pid);
app.usingWrapper = startResult.usingWrapper;
app.removed = false;
@@ -19748,7 +19750,7 @@
} else {
numEmpty++;
if (numEmpty > emptyProcessLimit) {
- app.kill("empty #" + numEmpty, true);
+ app.kill("empty #" + numEmpty, DEBUG_PROCESSES);
}
}
break;
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index b052d17..9e32efa 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -74,6 +74,7 @@
import android.os.UserHandle;
import android.service.voice.IVoiceInteractionSession;
import android.util.EventLog;
+import android.util.Log;
import android.util.Slog;
import android.view.Display;
@@ -733,7 +734,7 @@
"Launch completed; removing icicle of " + r.icicle);
}
- private void addRecentActivityLocked(ActivityRecord r) {
+ void addRecentActivityLocked(ActivityRecord r) {
if (r != null) {
mRecentTasks.addLocked(r.task);
r.task.touchActiveTime();
@@ -2312,8 +2313,8 @@
updateTaskMovement(task, true);
}
- final void startActivityLocked(ActivityRecord r, boolean newTask,
- boolean doResume, boolean keepCurTransition, ActivityOptions options) {
+ final void startActivityLocked(ActivityRecord r, boolean newTask, boolean keepCurTransition,
+ ActivityOptions options) {
TaskRecord rTask = r.task;
final int taskId = rTask.taskId;
// mLaunchTaskBehind tasks get placed at the back of the task stack.
@@ -2459,12 +2460,6 @@
if (VALIDATE_TOKENS) {
validateAppTokensLocked();
}
-
- if (doResume) {
- mStackSupervisor.resumeTopActivitiesLocked(this, r, options);
- } else {
- addRecentActivityLocked(r);
- }
}
final void validateAppTokensLocked() {
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index f4ba19f..9fff0c8 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -2628,9 +2628,14 @@
}
ActivityStack.logStartActivity(EventLogTags.AM_CREATE_ACTIVITY, r, r.task);
targetStack.mLastPausedActivity = null;
- targetStack.startActivityLocked(r, newTask, doResume, keepCurTransition, options);
- if (!launchTaskBehind && doResume) {
- mService.setFocusedActivityLocked(r, "startedActivity");
+ targetStack.startActivityLocked(r, newTask, keepCurTransition, options);
+ if (doResume) {
+ if (!launchTaskBehind) {
+ mService.setFocusedActivityLocked(r, "startedActivity");
+ }
+ resumeTopActivitiesLocked(targetStack, r, options);
+ } else {
+ targetStack.addRecentActivityLocked(r);
}
updateUserStackLocked(r.userId, targetStack);