Loading apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java +31 −30 Original line number Diff line number Diff line Loading @@ -205,12 +205,11 @@ public class AlarmManagerService extends SystemService { final LocalLog mLog = new LocalLog(TAG); AppOpsManager mAppOps; IAppOpsService mAppOpsService; DeviceIdleInternal mLocalDeviceIdleController; private UsageStatsManagerInternal mUsageStatsManagerInternal; private ActivityManagerInternal mActivityManagerInternal; private PackageManagerInternal mPackageManagerInternal; private PermissionManagerServiceInternal mLocalPermissionManager; private volatile PermissionManagerServiceInternal mLocalPermissionManager; final Object mLock = new Object(); Loading Loading @@ -1506,7 +1505,7 @@ public class AlarmManagerService extends SystemService { @Override public void onStart() { mInjector.init(); mMetricsHelper = new MetricsHelper(getContext()); mMetricsHelper = new MetricsHelper(getContext(), mLock); mListenerDeathRecipient = new IBinder.DeathRecipient() { @Override Loading Loading @@ -1630,10 +1629,24 @@ public class AlarmManagerService extends SystemService { if (phase == PHASE_SYSTEM_SERVICES_READY) { synchronized (mLock) { mConstants.start(); mAppOps = (AppOpsManager) getContext().getSystemService(Context.APP_OPS_SERVICE); mAppOpsService = mInjector.getAppOpsService(); mLocalDeviceIdleController = LocalServices.getService(DeviceIdleInternal.class); mUsageStatsManagerInternal = LocalServices.getService(UsageStatsManagerInternal.class); mAppStateTracker = (AppStateTrackerImpl) LocalServices.getService(AppStateTracker.class); mAppStateTracker.addListener(mForceAppStandbyListener); mClockReceiver.scheduleTimeTickEvent(); mClockReceiver.scheduleDateChangedEvent(); } IAppOpsService iAppOpsService = mInjector.getAppOpsService(); try { mAppOpsService.startWatchingMode(AppOpsManager.OP_SCHEDULE_EXACT_ALARM, null, iAppOpsService.startWatchingMode(AppOpsManager.OP_SCHEDULE_EXACT_ALARM, null, new IAppOpsCallback.Stub() { @Override public void opChanged(int op, int uid, String packageName) Loading @@ -1649,12 +1662,6 @@ public class AlarmManagerService extends SystemService { }); } catch (RemoteException e) { } mMetricsHelper.registerPuller(mAlarmStore); mLocalDeviceIdleController = LocalServices.getService(DeviceIdleInternal.class); mUsageStatsManagerInternal = LocalServices.getService(UsageStatsManagerInternal.class); mLocalPermissionManager = LocalServices.getService( PermissionManagerServiceInternal.class); Loading @@ -1664,13 +1671,7 @@ public class AlarmManagerService extends SystemService { LocalServices.getService(AppStandbyInternal.class); appStandbyInternal.addListener(new AppStandbyTracker()); mAppStateTracker = (AppStateTrackerImpl) LocalServices.getService(AppStateTracker.class); mAppStateTracker.addListener(mForceAppStandbyListener); mClockReceiver.scheduleTimeTickEvent(); mClockReceiver.scheduleDateChangedEvent(); } mMetricsHelper.registerPuller(() -> mAlarmStore); } } Loading apex/jobscheduler/service/java/com/android/server/alarm/MetricsHelper.java +31 −23 Original line number Diff line number Diff line Loading @@ -30,17 +30,21 @@ import android.os.SystemClock; import com.android.internal.os.BackgroundThread; import com.android.internal.util.FrameworkStatsLog; import java.util.function.Supplier; /** * A helper class to write logs to statsd. */ class MetricsHelper { private Context mContext; private final Context mContext; private final Object mLock; MetricsHelper(Context context) { MetricsHelper(Context context, Object lock) { mContext = context; mLock = lock; } void registerPuller(AlarmStore alarmStore) { void registerPuller(Supplier<AlarmStore> alarmStoreSupplier) { final StatsManager statsManager = mContext.getSystemService(StatsManager.class); statsManager.setPullAtomCallback(FrameworkStatsLog.PENDING_ALARM_INFO, null, BackgroundThread.getExecutor(), (atomTag, data) -> { Loading @@ -48,13 +52,16 @@ class MetricsHelper { throw new UnsupportedOperationException("Unknown tag" + atomTag); } final long now = SystemClock.elapsedRealtime(); synchronized (mLock) { final AlarmStore alarmStore = alarmStoreSupplier.get(); data.add(FrameworkStatsLog.buildStatsEvent(atomTag, alarmStore.size(), alarmStore.getCount(a -> a.windowLength == 0), alarmStore.getCount(a -> a.wakeup), alarmStore.getCount( a -> (a.flags & AlarmManager.FLAG_ALLOW_WHILE_IDLE) != 0), alarmStore.getCount(a -> (a.flags & AlarmManager.FLAG_PRIORITIZE) != 0), alarmStore.getCount( a -> (a.flags & AlarmManager.FLAG_PRIORITIZE) != 0), alarmStore.getCount(a -> (a.operation != null && a.operation.isForegroundService())), alarmStore.getCount( Loading @@ -68,6 +75,7 @@ class MetricsHelper { alarmStore.getCount(a -> (a.alarmClock != null)) )); return StatsManager.PULL_SUCCESS; } }); } Loading Loading
apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java +31 −30 Original line number Diff line number Diff line Loading @@ -205,12 +205,11 @@ public class AlarmManagerService extends SystemService { final LocalLog mLog = new LocalLog(TAG); AppOpsManager mAppOps; IAppOpsService mAppOpsService; DeviceIdleInternal mLocalDeviceIdleController; private UsageStatsManagerInternal mUsageStatsManagerInternal; private ActivityManagerInternal mActivityManagerInternal; private PackageManagerInternal mPackageManagerInternal; private PermissionManagerServiceInternal mLocalPermissionManager; private volatile PermissionManagerServiceInternal mLocalPermissionManager; final Object mLock = new Object(); Loading Loading @@ -1506,7 +1505,7 @@ public class AlarmManagerService extends SystemService { @Override public void onStart() { mInjector.init(); mMetricsHelper = new MetricsHelper(getContext()); mMetricsHelper = new MetricsHelper(getContext(), mLock); mListenerDeathRecipient = new IBinder.DeathRecipient() { @Override Loading Loading @@ -1630,10 +1629,24 @@ public class AlarmManagerService extends SystemService { if (phase == PHASE_SYSTEM_SERVICES_READY) { synchronized (mLock) { mConstants.start(); mAppOps = (AppOpsManager) getContext().getSystemService(Context.APP_OPS_SERVICE); mAppOpsService = mInjector.getAppOpsService(); mLocalDeviceIdleController = LocalServices.getService(DeviceIdleInternal.class); mUsageStatsManagerInternal = LocalServices.getService(UsageStatsManagerInternal.class); mAppStateTracker = (AppStateTrackerImpl) LocalServices.getService(AppStateTracker.class); mAppStateTracker.addListener(mForceAppStandbyListener); mClockReceiver.scheduleTimeTickEvent(); mClockReceiver.scheduleDateChangedEvent(); } IAppOpsService iAppOpsService = mInjector.getAppOpsService(); try { mAppOpsService.startWatchingMode(AppOpsManager.OP_SCHEDULE_EXACT_ALARM, null, iAppOpsService.startWatchingMode(AppOpsManager.OP_SCHEDULE_EXACT_ALARM, null, new IAppOpsCallback.Stub() { @Override public void opChanged(int op, int uid, String packageName) Loading @@ -1649,12 +1662,6 @@ public class AlarmManagerService extends SystemService { }); } catch (RemoteException e) { } mMetricsHelper.registerPuller(mAlarmStore); mLocalDeviceIdleController = LocalServices.getService(DeviceIdleInternal.class); mUsageStatsManagerInternal = LocalServices.getService(UsageStatsManagerInternal.class); mLocalPermissionManager = LocalServices.getService( PermissionManagerServiceInternal.class); Loading @@ -1664,13 +1671,7 @@ public class AlarmManagerService extends SystemService { LocalServices.getService(AppStandbyInternal.class); appStandbyInternal.addListener(new AppStandbyTracker()); mAppStateTracker = (AppStateTrackerImpl) LocalServices.getService(AppStateTracker.class); mAppStateTracker.addListener(mForceAppStandbyListener); mClockReceiver.scheduleTimeTickEvent(); mClockReceiver.scheduleDateChangedEvent(); } mMetricsHelper.registerPuller(() -> mAlarmStore); } } Loading
apex/jobscheduler/service/java/com/android/server/alarm/MetricsHelper.java +31 −23 Original line number Diff line number Diff line Loading @@ -30,17 +30,21 @@ import android.os.SystemClock; import com.android.internal.os.BackgroundThread; import com.android.internal.util.FrameworkStatsLog; import java.util.function.Supplier; /** * A helper class to write logs to statsd. */ class MetricsHelper { private Context mContext; private final Context mContext; private final Object mLock; MetricsHelper(Context context) { MetricsHelper(Context context, Object lock) { mContext = context; mLock = lock; } void registerPuller(AlarmStore alarmStore) { void registerPuller(Supplier<AlarmStore> alarmStoreSupplier) { final StatsManager statsManager = mContext.getSystemService(StatsManager.class); statsManager.setPullAtomCallback(FrameworkStatsLog.PENDING_ALARM_INFO, null, BackgroundThread.getExecutor(), (atomTag, data) -> { Loading @@ -48,13 +52,16 @@ class MetricsHelper { throw new UnsupportedOperationException("Unknown tag" + atomTag); } final long now = SystemClock.elapsedRealtime(); synchronized (mLock) { final AlarmStore alarmStore = alarmStoreSupplier.get(); data.add(FrameworkStatsLog.buildStatsEvent(atomTag, alarmStore.size(), alarmStore.getCount(a -> a.windowLength == 0), alarmStore.getCount(a -> a.wakeup), alarmStore.getCount( a -> (a.flags & AlarmManager.FLAG_ALLOW_WHILE_IDLE) != 0), alarmStore.getCount(a -> (a.flags & AlarmManager.FLAG_PRIORITIZE) != 0), alarmStore.getCount( a -> (a.flags & AlarmManager.FLAG_PRIORITIZE) != 0), alarmStore.getCount(a -> (a.operation != null && a.operation.isForegroundService())), alarmStore.getCount( Loading @@ -68,6 +75,7 @@ class MetricsHelper { alarmStore.getCount(a -> (a.alarmClock != null)) )); return StatsManager.PULL_SUCCESS; } }); } Loading