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

Commit 36072e86 authored by YUKAI HUNG's avatar YUKAI HUNG Committed by Android (Google) Code Review
Browse files

Merge "[S-QPR1] protect gettinng battery stats from DeadSystemException" into sc-qpr1-dev

parents 4a4f13d5 22e637bf
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.os.BatteryStatsManager;
import android.os.BatteryUsageStats;
import android.os.SystemClock;
import android.text.format.Formatter;
import android.util.Log;
import android.util.SparseIntArray;

import androidx.annotation.NonNull;
@@ -42,6 +43,7 @@ import com.android.settingslib.utils.PowerUtil;
import com.android.settingslib.utils.StringUtil;

public class BatteryInfo {
    private static final String TAG = "BatteryInfo";

    public CharSequence chargeLabel;
    public CharSequence remainingLabel;
@@ -155,8 +157,15 @@ public class BatteryInfo {
                if (batteryUsageStats != null) {
                    stats = batteryUsageStats;
                } else {
                    try {
                        stats = context.getSystemService(BatteryStatsManager.class)
                                .getBatteryUsageStats();
                    } catch (RuntimeException e) {
                        Log.e(TAG, "getBatteryInfo() from getBatteryUsageStats()", e);
                        // Use default BatteryUsageStats.
                        stats = new BatteryUsageStats.Builder(
                                new String[0], /* includePowerModels */ false).build();
                    }
                }
                return getBatteryInfo(context, stats, shortString);
            }
+8 −0
Original line number Diff line number Diff line
@@ -74,6 +74,14 @@ public class BatteryOptimizeUtils {
    }

    public void setAppUsageState(AppUsageState state) {
        try {
            setAppUsageStateInternal(state);
        } catch (Exception e) {
            Log.e(TAG, "setAppUsageState() is failed for " + mPackageName, e);
        }
    }

    private void setAppUsageStateInternal(AppUsageState state) {
        switch (state) {
            case RESTRICTED:
                mBatteryUtils.setForceAppStandby(mUid, mPackageName, AppOpsManager.MODE_IGNORED);
+10 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.content.Context;
import android.os.BatteryStatsManager;
import android.os.BatteryUsageStats;
import android.os.BatteryUsageStatsQuery;
import android.util.Log;

import com.android.settingslib.utils.AsyncLoaderCompat;

@@ -27,6 +28,7 @@ import com.android.settingslib.utils.AsyncLoaderCompat;
 * Loader to get new {@link BatteryUsageStats} in the background
 */
public class BatteryUsageStatsLoader extends AsyncLoaderCompat<BatteryUsageStats> {
    private static final String TAG = "BatteryUsageStatsLoader";
    private final BatteryStatsManager mBatteryStatsManager;
    private final boolean mIncludeBatteryHistory;

@@ -42,7 +44,14 @@ public class BatteryUsageStatsLoader extends AsyncLoaderCompat<BatteryUsageStats
        if (mIncludeBatteryHistory) {
            builder.includeBatteryHistory();
        }
        try {
            return mBatteryStatsManager.getBatteryUsageStats(builder.build());
        } catch (RuntimeException e) {
            Log.e(TAG, "loadInBackground() for getBatteryUsageStats()", e);
            // Use default BatteryUsageStats.
            return new BatteryUsageStats.Builder(
                    new String[0], /* includePowerModels */ false).build();
        }
    }

    @Override
+11 −2
Original line number Diff line number Diff line
@@ -368,8 +368,17 @@ public class BatteryUtils {
    public BatteryInfo getBatteryInfo(final String tag) {
        final BatteryStatsManager systemService = mContext.getSystemService(
                BatteryStatsManager.class);
        final BatteryUsageStats batteryUsageStats = systemService.getBatteryUsageStats(
        BatteryUsageStats batteryUsageStats;
        try {
            batteryUsageStats = systemService.getBatteryUsageStats(
                    new BatteryUsageStatsQuery.Builder().includeBatteryHistory().build());
        } catch (RuntimeException e) {
            Log.e(TAG, "getBatteryInfo() error for getBatteryUsageStats()", e);
            // Use default BatteryUsageStats.
            batteryUsageStats =
                    new BatteryUsageStats.Builder(new String[0], /* includePowerModels */ false)
                            .build();
        }

        final long startTime = System.currentTimeMillis();