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

Commit 55fcb02a authored by YK Hung's avatar YK Hung Committed by Android (Google) Code Review
Browse files

Merge "Refine the BatteryUsageStats close() method invoke timing" into tm-dev

parents fa29c0c3 c12b9500
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -153,6 +153,7 @@ public class BatteryInfo {
        new AsyncTask<Void, Void, BatteryInfo>() {
            @Override
            protected BatteryInfo doInBackground(Void... params) {
                boolean shouldCloseBatteryUsageStats = false;
                BatteryUsageStats stats;
                if (batteryUsageStats != null) {
                    stats = batteryUsageStats;
@@ -160,6 +161,7 @@ public class BatteryInfo {
                    try {
                        stats = context.getSystemService(BatteryStatsManager.class)
                                .getBatteryUsageStats();
                        shouldCloseBatteryUsageStats = true;
                    } catch (RuntimeException e) {
                        Log.e(TAG, "getBatteryInfo() from getBatteryUsageStats()", e);
                        // Use default BatteryUsageStats.
@@ -168,11 +170,13 @@ public class BatteryInfo {
                }
                final BatteryInfo batteryInfo =
                        getBatteryInfo(context, stats, shortString);
                if (shouldCloseBatteryUsageStats) {
                    try {
                        stats.close();
                    } catch (Exception e) {
                        Log.e(TAG, "BatteryUsageStats.close() failed", e);
                    }
                }
                return batteryInfo;
            }

+15 −10
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ public abstract class PowerUsageBase extends DashboardFragment {
    public void onStop() {
        super.onStop();
        mBatteryBroadcastReceiver.unRegister();
        closeBatteryUsageStatsIfNeeded();
    }

    protected void restartBatteryStatsLoader(int refreshType) {
@@ -104,16 +105,6 @@ public abstract class PowerUsageBase extends DashboardFragment {
        final long startTime = System.currentTimeMillis();
        historyPref.setBatteryUsageStats(mBatteryUsageStats);
        BatteryUtils.logRuntime(TAG, "updatePreference", startTime);
        if (mBatteryUsageStats == null) {
            return;
        }
        try {
            mBatteryUsageStats.close();
        } catch (Exception e) {
            Log.e(TAG, "BatteryUsageStats.close() failed", e);
        } finally {
            mBatteryUsageStats = null;
        }
    }

    private class BatteryUsageStatsLoaderCallbacks
@@ -130,6 +121,7 @@ public abstract class PowerUsageBase extends DashboardFragment {
        @Override
        public void onLoadFinished(Loader<BatteryUsageStats> loader,
                BatteryUsageStats batteryUsageStats) {
            closeBatteryUsageStatsIfNeeded();
            mBatteryUsageStats = batteryUsageStats;
            PowerUsageBase.this.onLoadFinished(mRefreshType);
        }
@@ -138,4 +130,17 @@ public abstract class PowerUsageBase extends DashboardFragment {
        public void onLoaderReset(Loader<BatteryUsageStats> loader) {
        }
    }

    private void closeBatteryUsageStatsIfNeeded() {
        if (mBatteryUsageStats == null) {
            return;
        }
        try {
            mBatteryUsageStats.close();
        } catch (Exception e) {
            Log.e(TAG, "BatteryUsageStats.close() failed", e);
        } finally {
            mBatteryUsageStats = null;
        }
    }
}