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

Commit 24dd30d8 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "StatsCompanionService alarms more efficient"

parents 7f297c0f 75158ac5
Loading
Loading
Loading
Loading
+0 −15
Original line number Diff line number Diff line
@@ -4287,21 +4287,6 @@
            </intent-filter>
        </receiver>

        <receiver android:name="com.android.server.stats.StatsCompanionService$AnomalyAlarmReceiver"
                  android:permission="android.permission.STATSCOMPANION"
                  android:exported="false">
        </receiver>

        <receiver android:name="com.android.server.stats.StatsCompanionService$PullingAlarmReceiver"
                  android:permission="android.permission.STATSCOMPANION"
                  android:exported="false">
        </receiver>

        <receiver android:name="com.android.server.stats.StatsCompanionService$PeriodicAlarmReceiver"
                  android:permission="android.permission.STATSCOMPANION"
                  android:exported="false">
        </receiver>

        <service android:name="android.hardware.location.GeofenceHardwareService"
            android:permission="android.permission.LOCATION_HARDWARE"
            android:exported="false" />
+3 −3
Original line number Diff line number Diff line
@@ -3272,11 +3272,11 @@ Lcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;
Lcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;
Lcom/android/server/soundtrigger/SoundTriggerService;
Lcom/android/server/stats/StatsCompanionService$1;
Lcom/android/server/stats/StatsCompanionService$AnomalyAlarmReceiver;
Lcom/android/server/stats/StatsCompanionService$AnomalyAlarmListener;
Lcom/android/server/stats/StatsCompanionService$AppUpdateReceiver;
Lcom/android/server/stats/StatsCompanionService$Lifecycle;
Lcom/android/server/stats/StatsCompanionService$PeriodicAlarmReceiver;
Lcom/android/server/stats/StatsCompanionService$PullingAlarmReceiver;
Lcom/android/server/stats/StatsCompanionService$PeriodicAlarmListener;
Lcom/android/server/stats/StatsCompanionService$PullingAlarmListener;
Lcom/android/server/stats/StatsCompanionService$ShutdownEventReceiver;
Lcom/android/server/stats/StatsCompanionService$StatsdDeathRecipient;
Lcom/android/server/stats/StatsCompanionService;
+40 −42
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.server.stats;
import android.annotation.Nullable;
import android.app.ActivityManagerInternal;
import android.app.AlarmManager;
import android.app.AlarmManager.OnAlarmListener;
import android.app.PendingIntent;
import android.app.ProcessMemoryState;
import android.app.StatsManager;
@@ -124,9 +125,9 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
    private static IStatsManager sStatsd;
    private static final Object sStatsdLock = new Object();

    private final PendingIntent mAnomalyAlarmIntent;
    private final PendingIntent mPullingAlarmIntent;
    private final PendingIntent mPeriodicAlarmIntent;
    private final OnAlarmListener mAnomalyAlarmListener = new AnomalyAlarmListener();
    private final OnAlarmListener mPullingAlarmListener = new PullingAlarmListener();
    private final OnAlarmListener mPeriodicAlarmListener = new PeriodicAlarmListener();
    private final BroadcastReceiver mAppUpdateReceiver;
    private final BroadcastReceiver mUserUpdateReceiver;
    private final ShutdownEventReceiver mShutdownEventReceiver;
@@ -158,12 +159,6 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
        mContext = context;
        mAlarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);

        mAnomalyAlarmIntent = PendingIntent.getBroadcast(mContext, 0,
                new Intent(mContext, AnomalyAlarmReceiver.class), 0);
        mPullingAlarmIntent = PendingIntent.getBroadcast(
                mContext, 0, new Intent(mContext, PullingAlarmReceiver.class), 0);
        mPeriodicAlarmIntent = PendingIntent.getBroadcast(
                mContext, 0, new Intent(mContext, PeriodicAlarmReceiver.class), 0);
        mAppUpdateReceiver = new AppUpdateReceiver();
        mUserUpdateReceiver = new BroadcastReceiver() {
            @Override
@@ -345,9 +340,9 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
        }
    }

    public final static class AnomalyAlarmReceiver extends BroadcastReceiver {
    public final static class AnomalyAlarmListener implements OnAlarmListener {
        @Override
        public void onReceive(Context context, Intent intent) {
        public void onAlarm() {
            Slog.i(TAG, "StatsCompanionService believes an anomaly has occurred at time "
                    + System.currentTimeMillis() + "ms.");
            synchronized (sStatsdLock) {
@@ -366,9 +361,9 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
        }
    }

    public final static class PullingAlarmReceiver extends BroadcastReceiver {
    public final static class PullingAlarmListener implements OnAlarmListener {
        @Override
        public void onReceive(Context context, Intent intent) {
        public void onAlarm() {
            if (DEBUG)
                Slog.d(TAG, "Time to poll something.");
            synchronized (sStatsdLock) {
@@ -386,9 +381,9 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
        }
    }

    public final static class PeriodicAlarmReceiver extends BroadcastReceiver {
    public final static class PeriodicAlarmListener implements OnAlarmListener {
        @Override
        public void onReceive(Context context, Intent intent) {
        public void onAlarm() {
            if (DEBUG)
                Slog.d(TAG, "Time to trigger periodic alarm.");
            synchronized (sStatsdLock) {
@@ -442,9 +437,9 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
        try {
            // using ELAPSED_REALTIME, not ELAPSED_REALTIME_WAKEUP, so if device is asleep, will
            // only fire when it awakens.
            // This alarm is inexact, leaving its exactness completely up to the OS optimizations.
            // AlarmManager will automatically cancel any previous mAnomalyAlarmIntent alarm.
            mAlarmManager.setExact(AlarmManager.ELAPSED_REALTIME, timestampMs, mAnomalyAlarmIntent);
            // AlarmManager will automatically cancel any previous mAnomalyAlarmListener alarm.
            mAlarmManager.setExact(AlarmManager.ELAPSED_REALTIME, timestampMs, TAG + ".anomaly",
                    mAnomalyAlarmListener, null);
        } finally {
            Binder.restoreCallingIdentity(callingToken);
        }
@@ -456,7 +451,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
        if (DEBUG) Slog.d(TAG, "Cancelling anomaly alarm");
        final long callingToken = Binder.clearCallingIdentity();
        try {
            mAlarmManager.cancel(mAnomalyAlarmIntent);
            mAlarmManager.cancel(mAnomalyAlarmListener);
        } finally {
            Binder.restoreCallingIdentity(callingToken);
        }
@@ -472,7 +467,8 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
        try {
            // using ELAPSED_REALTIME, not ELAPSED_REALTIME_WAKEUP, so if device is asleep, will
            // only fire when it awakens.
            mAlarmManager.setExact(AlarmManager.ELAPSED_REALTIME, timestampMs, mPeriodicAlarmIntent);
            mAlarmManager.setExact(AlarmManager.ELAPSED_REALTIME, timestampMs, TAG + ".periodic",
                    mPeriodicAlarmListener, null);
        } finally {
            Binder.restoreCallingIdentity(callingToken);
        }
@@ -485,7 +481,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
            Slog.d(TAG, "Cancelling periodic alarm");
        final long callingToken = Binder.clearCallingIdentity();
        try {
            mAlarmManager.cancel(mPeriodicAlarmIntent);
            mAlarmManager.cancel(mPeriodicAlarmListener);
        } finally {
            Binder.restoreCallingIdentity(callingToken);
        }
@@ -494,14 +490,16 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
    @Override // Binder call
    public void setPullingAlarm(long nextPullTimeMs) {
        enforceCallingPermission();
      if (DEBUG)
        Slog.d(TAG,
            "Setting pulling alarm in about " + (nextPullTimeMs - SystemClock.elapsedRealtime()));
        if (DEBUG) {
            Slog.d(TAG, "Setting pulling alarm in about "
                    + (nextPullTimeMs - SystemClock.elapsedRealtime()));
        }
        final long callingToken = Binder.clearCallingIdentity();
        try {
            // using ELAPSED_REALTIME, not ELAPSED_REALTIME_WAKEUP, so if device is asleep, will
            // only fire when it awakens.
        mAlarmManager.setExact(AlarmManager.ELAPSED_REALTIME, nextPullTimeMs, mPullingAlarmIntent);
            mAlarmManager.setExact(AlarmManager.ELAPSED_REALTIME, nextPullTimeMs, TAG + ".pull",
                    mPullingAlarmListener, null);
        } finally {
            Binder.restoreCallingIdentity(callingToken);
        }
@@ -514,7 +512,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
            Slog.d(TAG, "Cancelling pulling alarm");
        final long callingToken = Binder.clearCallingIdentity();
        try {
        mAlarmManager.cancel(mPullingAlarmIntent);
            mAlarmManager.cancel(mPullingAlarmListener);
        } finally {
            Binder.restoreCallingIdentity(callingToken);
        }