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

Commit 5c5e3bbd authored by jackqdyulei's avatar jackqdyulei
Browse files

Refactor the BatteryInfo

Move the battery stats logic to background because it is time
consuming.

Bug: 112262502
Test: robotest still pass
Change-Id: I794bc82a4f1b5ae5a883c89d447116601a86558f
parent e39e8d7f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ public class BatteryHistoryPreference extends Preference {
        BatteryInfo.getBatteryInfo(getContext(), info -> {
            mBatteryInfo = info;
            notifyChanged();
        }, batteryStats.getStats(), false);
        }, batteryStats, false);
    }

    public void setBottomSummary(CharSequence text) {
+16 −15
Original line number Diff line number Diff line
@@ -134,31 +134,32 @@ public class BatteryInfo {
    }

    public static void getBatteryInfo(final Context context, final Callback callback) {
        BatteryInfo.getBatteryInfo(context, callback, false /* shortString */);
        BatteryInfo.getBatteryInfo(context, callback, null /* statsHelper */,
                false /* shortString */);
    }

    public static void getBatteryInfo(final Context context, final Callback callback,
            boolean shortString) {
        final long startTime = System.currentTimeMillis();
        BatteryStatsHelper statsHelper = new BatteryStatsHelper(context, true);
        statsHelper.create((Bundle) null);
        BatteryUtils.logRuntime(LOG_TAG, "time to make batteryStatsHelper", startTime);
        BatteryInfo.getBatteryInfo(context, callback, statsHelper, shortString);
    }

    public static void getBatteryInfo(final Context context, final Callback callback,
            BatteryStatsHelper statsHelper, boolean shortString) {
        final long startTime = System.currentTimeMillis();
        BatteryStats stats = statsHelper.getStats();
        BatteryUtils.logRuntime(LOG_TAG, "time for getStats", startTime);
        getBatteryInfo(context, callback, stats, shortString);
        BatteryInfo.getBatteryInfo(context, callback, null /* statsHelper */, shortString);
    }

    public static void getBatteryInfo(final Context context, final Callback callback,
            BatteryStats stats, boolean shortString) {
            final BatteryStatsHelper statsHelper, boolean shortString) {
        new AsyncTask<Void, Void, BatteryInfo>() {
            @Override
            protected BatteryInfo doInBackground(Void... params) {
                final BatteryStats stats;
                final long batteryStatsTime = System.currentTimeMillis();
                if (statsHelper == null) {
                    final BatteryStatsHelper localStatsHelper = new BatteryStatsHelper(context,
                            true);
                    localStatsHelper.create((Bundle) null);
                    stats = localStatsHelper.getStats();
                } else {
                    stats = statsHelper.getStats();
                }
                BatteryUtils.logRuntime(LOG_TAG, "time for getStats", batteryStatsTime);

                final long startTime = System.currentTimeMillis();
                PowerUsageFeatureProvider provider =
                        FeatureFactory.getFactory(context).getPowerUsageFeatureProvider(context);