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

Commit 20b84dfa authored by Adam Lesinski's avatar Adam Lesinski
Browse files

Move batterystats stats collection to its own thread

Too many other tasks run on common handlers, and the batterystats collection
may block waiting for a timeout of up to 2 seconds.

Bug:27857665
Change-Id: I5be1ddc374d69620f4f7d821eb29e8524294c9a4
parent 6e08a629
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -58,8 +58,8 @@ import com.android.internal.app.IBatteryStats;
import com.android.internal.os.BatteryStatsHelper;
import com.android.internal.os.BatteryStatsImpl;
import com.android.internal.os.PowerProfile;
import com.android.server.FgThread;
import com.android.server.LocalServices;
import com.android.server.ServiceThread;

import java.io.File;
import java.io.FileDescriptor;
@@ -176,7 +176,10 @@ public final class BatteryStatsService extends IBatteryStats.Stub
    BatteryStatsService(File systemDir, Handler handler) {
        // Our handler here will be accessing the disk, use a different thread than
        // what the ActivityManagerService gave us (no I/O on that one!).
        mHandler = new BatteryStatsHandler(FgThread.getHandler().getLooper());
        final ServiceThread thread = new ServiceThread("batterystats-sync",
                Process.THREAD_PRIORITY_DEFAULT, true);
        thread.start();
        mHandler = new BatteryStatsHandler(thread.getLooper());

        // BatteryStatsImpl expects the ActivityManagerService handler, so pass that one through.
        mStats = new BatteryStatsImpl(systemDir, handler, mHandler);
@@ -209,6 +212,9 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        synchronized (mStats) {
            mStats.shutdownLocked();
        }

        // Shutdown the thread we made.
        mHandler.getLooper().quit();
    }
    
    public static IBatteryStats getService() {