diff options
5 files changed, 30 insertions, 9 deletions
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto index f53ac1b77021..7bd7d6e18930 100644 --- a/cmds/statsd/src/atoms.proto +++ b/cmds/statsd/src/atoms.proto @@ -745,6 +745,22 @@ message ScheduledJobStateChanged { // This is only applicable when the state is FINISHED. // The default value is STOP_REASON_UNKNOWN. optional android.app.job.StopReasonEnum stop_reason = 4; + + // The standby bucket of the app that scheduled the job. These match the framework constants + // defined in JobSchedulerService.java with the addition of UNKNOWN using -1, as ACTIVE is + // already assigned 0. + enum Bucket { + UNKNOWN = -1; + ACTIVE = 0; + WORKING_SET = 1; + FREQUENT = 2; + RARE = 3; + NEVER = 4; + } + optional Bucket standby_bucket = 5 [default = UNKNOWN]; + + // The job id (as assigned by the app). + optional int32 job_id = 6; } /** diff --git a/core/java/com/android/internal/app/IBatteryStats.aidl b/core/java/com/android/internal/app/IBatteryStats.aidl index 114d31f207bd..d60d5438b3a7 100644 --- a/core/java/com/android/internal/app/IBatteryStats.aidl +++ b/core/java/com/android/internal/app/IBatteryStats.aidl @@ -71,8 +71,8 @@ interface IBatteryStats { void noteSyncStart(String name, int uid); void noteSyncFinish(String name, int uid); - void noteJobStart(String name, int uid); - void noteJobFinish(String name, int uid, int stopReason); + void noteJobStart(String name, int uid, int standbyBucket, int jobid); + void noteJobFinish(String name, int uid, int stopReason, int standbyBucket, int jobid); void noteStartWakelock(int uid, int pid, String name, String historyName, int type, boolean unimportantForLogging); diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java index f86ba278138c..e2b59b45e1e6 100644 --- a/services/core/java/com/android/server/am/BatteryStatsService.java +++ b/services/core/java/com/android/server/am/BatteryStatsService.java @@ -467,23 +467,25 @@ public final class BatteryStatsService extends IBatteryStats.Stub } } - public void noteJobStart(String name, int uid) { + /** A scheduled job was started. */ + public void noteJobStart(String name, int uid, int standbyBucket, int jobid) { enforceCallingPermission(); synchronized (mStats) { mStats.noteJobStartLocked(name, uid); StatsLog.write_non_chained(StatsLog.SCHEDULED_JOB_STATE_CHANGED, uid, null, name, StatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__STARTED, - JobProtoEnums.STOP_REASON_UNKNOWN); + JobProtoEnums.STOP_REASON_UNKNOWN, standbyBucket, jobid); } } - public void noteJobFinish(String name, int uid, int stopReason) { + /** A scheduled job was finished. */ + public void noteJobFinish(String name, int uid, int stopReason, int standbyBucket, int jobid) { enforceCallingPermission(); synchronized (mStats) { mStats.noteJobFinishLocked(name, uid, stopReason); StatsLog.write_non_chained(StatsLog.SCHEDULED_JOB_STATE_CHANGED, uid, null, name, StatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__FINISHED, - stopReason); + stopReason, standbyBucket, jobid); } } diff --git a/services/core/java/com/android/server/job/JobSchedulerService.java b/services/core/java/com/android/server/job/JobSchedulerService.java index 35a82aef51b5..ea1c49daefb9 100644 --- a/services/core/java/com/android/server/job/JobSchedulerService.java +++ b/services/core/java/com/android/server/job/JobSchedulerService.java @@ -1057,7 +1057,8 @@ public class JobSchedulerService extends com.android.server.SystemService StatsLog.write_non_chained(StatsLog.SCHEDULED_JOB_STATE_CHANGED, uId, null, jobStatus.getBatteryName(), StatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__SCHEDULED, - JobProtoEnums.STOP_REASON_CANCELLED); + JobProtoEnums.STOP_REASON_CANCELLED, jobStatus.getStandbyBucket(), + jobStatus.getJobId()); // If the job is immediately ready to run, then we can just immediately // put it in the pending list and try to schedule it. This is especially diff --git a/services/core/java/com/android/server/job/JobServiceContext.java b/services/core/java/com/android/server/job/JobServiceContext.java index a349d875c1ff..7689bd26a193 100644 --- a/services/core/java/com/android/server/job/JobServiceContext.java +++ b/services/core/java/com/android/server/job/JobServiceContext.java @@ -265,7 +265,8 @@ public final class JobServiceContext implements ServiceConnection { } mJobPackageTracker.noteActive(job); try { - mBatteryStats.noteJobStart(job.getBatteryName(), job.getSourceUid()); + mBatteryStats.noteJobStart(job.getBatteryName(), job.getSourceUid(), + job.getStandbyBucket(), job.getJobId()); } catch (RemoteException e) { // Whatever. } @@ -774,7 +775,8 @@ public final class JobServiceContext implements ServiceConnection { mJobPackageTracker.noteInactive(completedJob, mParams.getStopReason(), reason); try { mBatteryStats.noteJobFinish(mRunningJob.getBatteryName(), - mRunningJob.getSourceUid(), mParams.getStopReason()); + mRunningJob.getSourceUid(), mParams.getStopReason(), + mRunningJob.getStandbyBucket(), mRunningJob.getJobId()); } catch (RemoteException e) { // Whatever. } |