diff options
| -rw-r--r-- | cmds/statsd/src/atoms.proto | 13 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 37 |
2 files changed, 44 insertions, 6 deletions
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto index 24df8838e100..7646c3c89014 100644 --- a/cmds/statsd/src/atoms.proto +++ b/cmds/statsd/src/atoms.proto @@ -994,6 +994,19 @@ message WakeupAlarmOccurred { // Name of source package (for historical reasons, since BatteryStats tracked it). optional string package_name = 3; + + // These enum values match the STANDBY_BUCKET_XXX constants defined in UsageStatsManager.java. + enum Bucket { + UNKNOWN = 0; + EXEMPTED = 5; + ACTIVE = 10; + WORKING_SET = 20; + FREQUENT = 30; + RARE = 40; + NEVER = 50; + } + // The App Standby bucket of the app that scheduled the alarm at the time the alarm fired. + optional Bucket app_standby_bucket = 4; } /** diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index a809d2194256..7a9375373557 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -8457,18 +8457,43 @@ public class ActivityManagerService extends IActivityManager.Stub } } - if (DEBUG_POWER) { - Slog.w(TAG, "noteWakupAlarm[ sourcePkg=" + sourcePkg + ", sourceUid=" + sourceUid - + ", workSource=" + workSource + ", tag=" + tag + "]"); - } + int standbyBucket = 0; mBatteryStatsService.noteWakupAlarm(sourcePkg, sourceUid, workSource, tag); if (workSource != null) { - StatsLog.write(StatsLog.WAKEUP_ALARM_OCCURRED, workSource, tag, sourcePkg); + String workSourcePackage = workSource.getName(0); + int workSourceUid = workSource.getAttributionUid(); + if (workSourcePackage == null) { + workSourcePackage = sourcePkg; + workSourceUid = sourceUid; + } + + if (mUsageStatsService != null) { + standbyBucket = mUsageStatsService.getAppStandbyBucket(workSourcePackage, + UserHandle.getUserId(workSourceUid), SystemClock.elapsedRealtime()); + } + + StatsLog.write(StatsLog.WAKEUP_ALARM_OCCURRED, workSource, tag, sourcePkg, + standbyBucket); + if (DEBUG_POWER) { + Slog.w(TAG, "noteWakeupAlarm[ sourcePkg=" + sourcePkg + ", sourceUid=" + sourceUid + + ", workSource=" + workSource + ", tag=" + tag + ", standbyBucket=" + + standbyBucket + " wsName=" + workSourcePackage + ")]"); + } } else { + if (mUsageStatsService != null) { + standbyBucket = mUsageStatsService.getAppStandbyBucket(sourcePkg, + UserHandle.getUserId(sourceUid), SystemClock.elapsedRealtime()); + } StatsLog.write_non_chained(StatsLog.WAKEUP_ALARM_OCCURRED, sourceUid, null, tag, - sourcePkg); + sourcePkg, standbyBucket); + if (DEBUG_POWER) { + Slog.w(TAG, "noteWakeupAlarm[ sourcePkg=" + sourcePkg + ", sourceUid=" + sourceUid + + ", workSource=" + workSource + ", tag=" + tag + ", standbyBucket=" + + standbyBucket + "]"); + } } + } @Override |