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

Commit 9cbf8e27 authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "Acquire wakelock during network stats collection."

parents 8eb89cc7 6248926e
Loading
Loading
Loading
Loading
+25 −4
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ import android.os.Environment;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.INetworkManagementService;
import android.os.PowerManager;
import android.os.RemoteException;
import android.os.SystemClock;
import android.provider.Settings;
@@ -112,6 +113,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
    private final TrustedTime mTime;
    private final NetworkStatsSettings mSettings;

    private final PowerManager.WakeLock mWakeLock;

    private IConnectivityManager mConnManager;

    // @VisibleForTesting
@@ -191,6 +194,10 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
        mTime = checkNotNull(time, "missing TrustedTime");
        mSettings = checkNotNull(settings, "missing NetworkStatsSettings");

        final PowerManager powerManager = (PowerManager) context.getSystemService(
                Context.POWER_SERVICE);
        mWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);

        mHandlerThread = new HandlerThread(TAG);
        mHandlerThread.start();
        mHandler = new Handler(mHandlerThread.getLooper());
@@ -408,7 +415,12 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
            // on background handler thread, and verified CONNECTIVITY_INTERNAL
            // permission above.
            synchronized (mStatsLock) {
                mWakeLock.acquire();
                try {
                    updateIfacesLocked();
                } finally {
                    mWakeLock.release();
                }
            }
        }
    };
@@ -419,8 +431,12 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
            // on background handler thread, and verified UPDATE_DEVICE_STATS
            // permission above.
            synchronized (mStatsLock) {
                // TODO: acquire wakelock while performing poll
                mWakeLock.acquire();
                try {
                    performPollLocked(true, false);
                } finally {
                    mWakeLock.release();
                }
            }
        }
    };
@@ -433,7 +449,12 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
            final int uid = intent.getIntExtra(EXTRA_UID, 0);
            synchronized (mStatsLock) {
                // TODO: perform one last stats poll for UID
                mWakeLock.acquire();
                try {
                    removeUidLocked(uid);
                } finally {
                    mWakeLock.release();
                }
            }
        }
    };