Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0afea9ae authored by Chong Zhang's avatar Chong Zhang Committed by android-build-merger
Browse files

Merge "fix "am start -W" hang on activity start" into nyc-dev am: 5e40748d

am: 93d22c2a

* commit '93d22c2a':
  fix "am start -W" hang on activity start

Change-Id: I31b86327ff2865b4017c3e78c96a3c22411fa645
parents 3b63d65d 93d22c2a
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -1123,6 +1123,13 @@ final class ActivityRecord {

    public void reportFullyDrawnLocked() {
        final long curTime = SystemClock.uptimeMillis();
        // Normally launch time counts from the point when the activity is resumed, to when the
        // first window is drawn. However the activity could become visible before it is resumed,
        // due to some other activity in the same task being launched. In this case we still need
        // to report launch time to unblock ActivityStarter.startActivityMayWait().
        if (displayStartTime == 0 && task != null && task.isLaunching) {
            displayStartTime = curTime;
        }
        if (displayStartTime != 0) {
            reportLaunchTimeLocked(curTime);
        }
@@ -1188,13 +1195,22 @@ final class ActivityRecord {
            //service.mUsageStatsService.noteLaunchTime(realActivity, (int)totalTime);
        }
        displayStartTime = 0;
        task.isLaunching = false;
        stack.mLaunchStartTime = 0;
    }

    void windowsDrawnLocked() {
        mStackSupervisor.mActivityMetricsLogger.notifyWindowsDrawn();
        final long curTime = SystemClock.uptimeMillis();
        // Normally launch time counts from the point when the activity is resumed, to when the
        // first window is drawn. However the activity could become visible before it is resumed,
        // due to some other activity in the same task being launched. In this case we still need
        // to report launch time to unblock ActivityStarter.startActivityMayWait().
        if (displayStartTime == 0 && task != null && task.isLaunching) {
            displayStartTime = curTime;
        }
        if (displayStartTime != 0) {
            reportLaunchTimeLocked(SystemClock.uptimeMillis());
            reportLaunchTimeLocked(curTime);
        }
        mStackSupervisor.sendWaitingVisibleReportLocked(this);
        startTime = 0;
+6 −0
Original line number Diff line number Diff line
@@ -912,6 +912,9 @@ final class ActivityStack {
    void setLaunchTime(ActivityRecord r) {
        if (r.displayStartTime == 0) {
            r.fullyDrawnStartTime = r.displayStartTime = SystemClock.uptimeMillis();
            if (r.task != null) {
                r.task.isLaunching = true;
            }
            if (mLaunchStartTime == 0) {
                startLaunchTraces(r.packageName);
                mLaunchStartTime = mFullyDrawnStartTime = r.displayStartTime;
@@ -926,6 +929,9 @@ final class ActivityStack {
        // Make sure that there is no activity waiting for this to launch.
        if (mStackSupervisor.mWaitingActivityLaunched.isEmpty()) {
            r.displayStartTime = r.fullyDrawnStartTime = 0;
            if (r.task != null) {
                r.task.isLaunching = false;
            }
        } else {
            mStackSupervisor.removeTimeoutsForActivityLocked(r);
            mStackSupervisor.scheduleIdleTimeoutLocked(r);
+1 −0
Original line number Diff line number Diff line
@@ -151,6 +151,7 @@ final class TaskRecord {
    long lastActiveTime;    // Last time this task was active, including sleep.
    boolean inRecents;      // Actually in the recents list?
    boolean isAvailable;    // Is the activity available to be launched?
    boolean isLaunching;    // Is an activity in this task launching?
    boolean rootWasReset;   // True if the intent at the root of the task had
                            // the FLAG_ACTIVITY_RESET_TASK_IF_NEEDED flag.
    boolean autoRemoveRecents;  // If true, we should automatically remove the task from