Loading services/core/java/com/android/server/am/ActiveServices.java +7 −9 Original line number Diff line number Diff line Loading @@ -2422,8 +2422,6 @@ public final class ActiveServices { getTimeLimitedFgsType(foregroundServiceType); final TimeLimitedFgsInfo fgsTypeInfo = fgsInfo.get(timeLimitedFgsType); if (fgsTypeInfo != null) { // TODO(b/330399444): check to see if all time book-keeping for // time limited types should use elapsedRealtime instead of uptime final long before24Hr = Math.max(0, SystemClock.elapsedRealtime() - (24 * 60 * 60 * 1000)); final long lastTimeOutAt = fgsTypeInfo.getTimeLimitExceededAt(); Loading Loading @@ -3757,7 +3755,7 @@ public final class ActiveServices { } traceInstant("FGS start: ", sr); final long nowUptime = SystemClock.uptimeMillis(); final long nowRealtime = SystemClock.elapsedRealtime(); // Fetch/create/update the fgs info for the time-limited type. SparseArray<TimeLimitedFgsInfo> fgsInfo = mTimeLimitedFgsInfo.get(sr.appInfo.uid); Loading @@ -3768,10 +3766,10 @@ public final class ActiveServices { final int timeLimitedFgsType = getTimeLimitedFgsType(sr.foregroundServiceType); TimeLimitedFgsInfo fgsTypeInfo = fgsInfo.get(timeLimitedFgsType); if (fgsTypeInfo == null) { fgsTypeInfo = sr.createTimeLimitedFgsInfo(nowUptime); fgsTypeInfo = sr.createTimeLimitedFgsInfo(nowRealtime); fgsInfo.put(timeLimitedFgsType, fgsTypeInfo); } fgsTypeInfo.setLastFgsStartTime(nowUptime); fgsTypeInfo.setLastFgsStartTime(nowRealtime); // We'll cancel the previous ANR timer and start a fresh one below. mFGSAnrTimer.cancel(sr); Loading Loading @@ -3845,14 +3843,14 @@ public final class ActiveServices { final TimeLimitedFgsInfo fgsTypeInfo = fgsInfo.get(fgsType); if (fgsTypeInfo != null) { // Update total runtime for the time-limited fgs type and mark it as timed out. final long nowUptime = SystemClock.uptimeMillis(); final long nowRealtime = SystemClock.elapsedRealtime(); fgsTypeInfo.updateTotalRuntime(); fgsTypeInfo.setTimeLimitExceededAt(nowUptime); fgsTypeInfo.setTimeLimitExceededAt(nowRealtime); logFGSStateChangeLocked(sr, FOREGROUND_SERVICE_STATE_CHANGED__STATE__TIMED_OUT, nowUptime > fgsTypeInfo.getLastFgsStartTime() ? (int) (nowUptime - fgsTypeInfo.getLastFgsStartTime()) : 0, nowRealtime > fgsTypeInfo.getLastFgsStartTime() ? (int) (nowRealtime - fgsTypeInfo.getLastFgsStartTime()) : 0, FGS_STOP_REASON_UNKNOWN, FGS_TYPE_POLICY_CHECK_UNKNOWN, FOREGROUND_SERVICE_STATE_CHANGED__FGS_START_API__FGSSTARTAPI_NA, Loading services/core/java/com/android/server/am/ServiceRecord.java +13 −13 Original line number Diff line number Diff line Loading @@ -30,9 +30,9 @@ import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_FOREGROUND_ import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; import android.annotation.ElapsedRealtimeLong; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UptimeMillisLong; import android.app.BackgroundStartPrivileges; import android.app.IApplicationThread; import android.app.Notification; Loading Loading @@ -677,46 +677,46 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN * Data container class to help track certain fgs info for time-restricted types. */ static class TimeLimitedFgsInfo { @UptimeMillisLong @ElapsedRealtimeLong private long mFirstFgsStartTime; @UptimeMillisLong @ElapsedRealtimeLong private long mLastFgsStartTime; @UptimeMillisLong @ElapsedRealtimeLong private long mTimeLimitExceededAt = Long.MIN_VALUE; private long mTotalRuntime = 0; TimeLimitedFgsInfo(@UptimeMillisLong long startTime) { TimeLimitedFgsInfo(@ElapsedRealtimeLong long startTime) { mFirstFgsStartTime = startTime; mLastFgsStartTime = startTime; } @UptimeMillisLong @ElapsedRealtimeLong public long getFirstFgsStartTime() { return mFirstFgsStartTime; } public void setLastFgsStartTime(@UptimeMillisLong long startTime) { public void setLastFgsStartTime(@ElapsedRealtimeLong long startTime) { mLastFgsStartTime = startTime; } @UptimeMillisLong @ElapsedRealtimeLong public long getLastFgsStartTime() { return mLastFgsStartTime; } public void updateTotalRuntime() { mTotalRuntime += SystemClock.uptimeMillis() - mLastFgsStartTime; mTotalRuntime += SystemClock.elapsedRealtime() - mLastFgsStartTime; } public long getTotalRuntime() { return mTotalRuntime; } public void setTimeLimitExceededAt(@UptimeMillisLong long timeLimitExceededAt) { public void setTimeLimitExceededAt(@ElapsedRealtimeLong long timeLimitExceededAt) { mTimeLimitExceededAt = timeLimitExceededAt; } @UptimeMillisLong @ElapsedRealtimeLong public long getTimeLimitExceededAt() { return mTimeLimitExceededAt; } Loading Loading @@ -1858,8 +1858,8 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN /** * Called when a time-limited FGS starts. */ public TimeLimitedFgsInfo createTimeLimitedFgsInfo(long nowUptime) { return new TimeLimitedFgsInfo(nowUptime); public TimeLimitedFgsInfo createTimeLimitedFgsInfo(@ElapsedRealtimeLong long nowRealtime) { return new TimeLimitedFgsInfo(nowRealtime); } /** Loading Loading
services/core/java/com/android/server/am/ActiveServices.java +7 −9 Original line number Diff line number Diff line Loading @@ -2422,8 +2422,6 @@ public final class ActiveServices { getTimeLimitedFgsType(foregroundServiceType); final TimeLimitedFgsInfo fgsTypeInfo = fgsInfo.get(timeLimitedFgsType); if (fgsTypeInfo != null) { // TODO(b/330399444): check to see if all time book-keeping for // time limited types should use elapsedRealtime instead of uptime final long before24Hr = Math.max(0, SystemClock.elapsedRealtime() - (24 * 60 * 60 * 1000)); final long lastTimeOutAt = fgsTypeInfo.getTimeLimitExceededAt(); Loading Loading @@ -3757,7 +3755,7 @@ public final class ActiveServices { } traceInstant("FGS start: ", sr); final long nowUptime = SystemClock.uptimeMillis(); final long nowRealtime = SystemClock.elapsedRealtime(); // Fetch/create/update the fgs info for the time-limited type. SparseArray<TimeLimitedFgsInfo> fgsInfo = mTimeLimitedFgsInfo.get(sr.appInfo.uid); Loading @@ -3768,10 +3766,10 @@ public final class ActiveServices { final int timeLimitedFgsType = getTimeLimitedFgsType(sr.foregroundServiceType); TimeLimitedFgsInfo fgsTypeInfo = fgsInfo.get(timeLimitedFgsType); if (fgsTypeInfo == null) { fgsTypeInfo = sr.createTimeLimitedFgsInfo(nowUptime); fgsTypeInfo = sr.createTimeLimitedFgsInfo(nowRealtime); fgsInfo.put(timeLimitedFgsType, fgsTypeInfo); } fgsTypeInfo.setLastFgsStartTime(nowUptime); fgsTypeInfo.setLastFgsStartTime(nowRealtime); // We'll cancel the previous ANR timer and start a fresh one below. mFGSAnrTimer.cancel(sr); Loading Loading @@ -3845,14 +3843,14 @@ public final class ActiveServices { final TimeLimitedFgsInfo fgsTypeInfo = fgsInfo.get(fgsType); if (fgsTypeInfo != null) { // Update total runtime for the time-limited fgs type and mark it as timed out. final long nowUptime = SystemClock.uptimeMillis(); final long nowRealtime = SystemClock.elapsedRealtime(); fgsTypeInfo.updateTotalRuntime(); fgsTypeInfo.setTimeLimitExceededAt(nowUptime); fgsTypeInfo.setTimeLimitExceededAt(nowRealtime); logFGSStateChangeLocked(sr, FOREGROUND_SERVICE_STATE_CHANGED__STATE__TIMED_OUT, nowUptime > fgsTypeInfo.getLastFgsStartTime() ? (int) (nowUptime - fgsTypeInfo.getLastFgsStartTime()) : 0, nowRealtime > fgsTypeInfo.getLastFgsStartTime() ? (int) (nowRealtime - fgsTypeInfo.getLastFgsStartTime()) : 0, FGS_STOP_REASON_UNKNOWN, FGS_TYPE_POLICY_CHECK_UNKNOWN, FOREGROUND_SERVICE_STATE_CHANGED__FGS_START_API__FGSSTARTAPI_NA, Loading
services/core/java/com/android/server/am/ServiceRecord.java +13 −13 Original line number Diff line number Diff line Loading @@ -30,9 +30,9 @@ import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_FOREGROUND_ import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; import android.annotation.ElapsedRealtimeLong; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UptimeMillisLong; import android.app.BackgroundStartPrivileges; import android.app.IApplicationThread; import android.app.Notification; Loading Loading @@ -677,46 +677,46 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN * Data container class to help track certain fgs info for time-restricted types. */ static class TimeLimitedFgsInfo { @UptimeMillisLong @ElapsedRealtimeLong private long mFirstFgsStartTime; @UptimeMillisLong @ElapsedRealtimeLong private long mLastFgsStartTime; @UptimeMillisLong @ElapsedRealtimeLong private long mTimeLimitExceededAt = Long.MIN_VALUE; private long mTotalRuntime = 0; TimeLimitedFgsInfo(@UptimeMillisLong long startTime) { TimeLimitedFgsInfo(@ElapsedRealtimeLong long startTime) { mFirstFgsStartTime = startTime; mLastFgsStartTime = startTime; } @UptimeMillisLong @ElapsedRealtimeLong public long getFirstFgsStartTime() { return mFirstFgsStartTime; } public void setLastFgsStartTime(@UptimeMillisLong long startTime) { public void setLastFgsStartTime(@ElapsedRealtimeLong long startTime) { mLastFgsStartTime = startTime; } @UptimeMillisLong @ElapsedRealtimeLong public long getLastFgsStartTime() { return mLastFgsStartTime; } public void updateTotalRuntime() { mTotalRuntime += SystemClock.uptimeMillis() - mLastFgsStartTime; mTotalRuntime += SystemClock.elapsedRealtime() - mLastFgsStartTime; } public long getTotalRuntime() { return mTotalRuntime; } public void setTimeLimitExceededAt(@UptimeMillisLong long timeLimitExceededAt) { public void setTimeLimitExceededAt(@ElapsedRealtimeLong long timeLimitExceededAt) { mTimeLimitExceededAt = timeLimitExceededAt; } @UptimeMillisLong @ElapsedRealtimeLong public long getTimeLimitExceededAt() { return mTimeLimitExceededAt; } Loading Loading @@ -1858,8 +1858,8 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN /** * Called when a time-limited FGS starts. */ public TimeLimitedFgsInfo createTimeLimitedFgsInfo(long nowUptime) { return new TimeLimitedFgsInfo(nowUptime); public TimeLimitedFgsInfo createTimeLimitedFgsInfo(@ElapsedRealtimeLong long nowRealtime) { return new TimeLimitedFgsInfo(nowRealtime); } /** Loading