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

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

Merge "Only register stationary detector while idle" into sc-qpr1-dev

parents b785d6d9 6eecc3ce
Loading
Loading
Loading
Loading
+16 −8
Original line number Diff line number Diff line
@@ -105,20 +105,15 @@ public final class StationaryThrottlingLocationProvider extends DelegateLocation

        synchronized (mLock) {
            mDeviceIdleHelper.addListener(this);
            mDeviceIdle = mDeviceIdleHelper.isDeviceIdle();
            mDeviceStationaryHelper.addListener(this);
            mDeviceStationary = false;
            mDeviceStationaryRealtimeMs = Long.MIN_VALUE;

            onThrottlingChangedLocked(false);
            onDeviceIdleChanged(mDeviceIdleHelper.isDeviceIdle());
        }
    }

    @Override
    protected void onStop() {
        synchronized (mLock) {
            mDeviceStationaryHelper.removeListener(this);
            mDeviceIdleHelper.removeListener(this);
            onDeviceIdleChanged(false);

            mIncomingRequest = ProviderRequest.EMPTY_REQUEST;
            mOutgoingRequest = ProviderRequest.EMPTY_REQUEST;
@@ -151,13 +146,26 @@ public final class StationaryThrottlingLocationProvider extends DelegateLocation
            }

            mDeviceIdle = deviceIdle;
            onThrottlingChangedLocked(false);

            if (deviceIdle) {
                // device stationary helper will deliver an immediate listener update
                mDeviceStationaryHelper.addListener(this);
            } else {
                mDeviceStationaryHelper.removeListener(this);
                mDeviceStationary = false;
                mDeviceStationaryRealtimeMs = Long.MIN_VALUE;
            }
        }
    }

    @Override
    public void onDeviceStationaryChanged(boolean deviceStationary) {
        synchronized (mLock) {
            if (!mDeviceIdle) {
                // stationary detection is only registered while idle - ignore late notifications
                return;
            }

            if (mDeviceStationary == deviceStationary) {
                return;
            }