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

Commit c6a5bcc9 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Optimize battery optimize page control flow" into sc-v2-dev

parents cb81759d 151b88f7
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -282,6 +282,15 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
        }
    }

    @Override
    public void onPause() {
        super.onPause();
        if (mEnableTriState) {
            Log.d(TAG, "Leave with mode: " + getSelectedPreference());
            mBatteryOptimizeUtils.setAppUsageState(getSelectedPreference());
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
@@ -490,6 +499,18 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
        mOptimizationMode = mBatteryOptimizeUtils.getAppOptimizationMode();
    }

    private int getSelectedPreference() {
        if (mRestrictedPreference.isChecked()) {
            return BatteryOptimizeUtils.MODE_RESTRICTED;
        } else if (mUnrestrictedPreference.isChecked()) {
            return BatteryOptimizeUtils.MODE_UNRESTRICTED;
        } else if (mOptimizePreference.isChecked()) {
            return BatteryOptimizeUtils.MODE_OPTIMIZED;
        } else {
            return BatteryOptimizeUtils.MODE_UNKNOWN;
        }
    }

    private CharSequence getAppActiveTime(Bundle bundle) {
        final long foregroundTimeMs = bundle.getLong(EXTRA_FOREGROUND_TIME);
        final long backgroundTimeMs = bundle.getLong(EXTRA_BACKGROUND_TIME);
+2 −2
Original line number Diff line number Diff line
@@ -29,8 +29,8 @@ import android.content.pm.ParceledListSlice;
import android.content.pm.UserInfo;
import android.os.Build;
import android.os.IDeviceIdleController;
import android.os.RemoteException;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.os.UserManager;
@@ -230,7 +230,7 @@ public final class BatteryBackupHelper implements BackupHelper {
                mBatteryOptimizeUtils != null
                        ? mBatteryOptimizeUtils /*testing only*/
                        : new BatteryOptimizeUtils(mContext, uid, packageName);
        batteryOptimizeUtils.setAppOptimizationMode(mode);
        batteryOptimizeUtils.setAppUsageState(mode);
        Log.d(TAG, String.format("restore:%s mode=%d", packageName, mode));
    }

+31 −25
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.settings.fuelgauge;
import android.annotation.IntDef;
import android.app.AppOpsManager;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;

import androidx.annotation.VisibleForTesting;
@@ -89,36 +90,28 @@ public class BatteryOptimizeUtils {
        return getAppOptimizationMode(mMode, mAllowListed);
    }

    public void setAppOptimizationMode(@OptimizationMode int mode) {
        try {
            setAppUsageStateInternal(mode);
        } catch (Exception e) {
            Log.e(TAG, "setAppUsageState() is failed for " + mPackageName, e);
        }
    }

    /** Sets the {@link OptimizationMode} for associated app. */
    public void setAppUsageStateInternal(@OptimizationMode int mode) {
    public void setAppUsageState(@OptimizationMode int mode) {
        if (getAppOptimizationMode(mMode, mAllowListed) == mode) {
            Log.w(TAG, "set the same optimization mode for: " + mPackageName);
            return;
        }

        AsyncTask.execute(() -> {
            switch (mode) {
                case MODE_RESTRICTED:
                mBatteryUtils.setForceAppStandby(mUid, mPackageName, AppOpsManager.MODE_IGNORED);
                mPowerAllowListBackend.removeApp(mPackageName);
                    setAppOptimizationMode(AppOpsManager.MODE_IGNORED, /* allowListed */ false);
                    break;
                case MODE_UNRESTRICTED:
                mBatteryUtils.setForceAppStandby(mUid, mPackageName, AppOpsManager.MODE_ALLOWED);
                mPowerAllowListBackend.addApp(mPackageName);
                    setAppOptimizationMode(AppOpsManager.MODE_ALLOWED, /* allowListed */ true);
                    break;
                case MODE_OPTIMIZED:
                mBatteryUtils.setForceAppStandby(mUid, mPackageName, AppOpsManager.MODE_ALLOWED);
                mPowerAllowListBackend.removeApp(mPackageName);
                    setAppOptimizationMode(AppOpsManager.MODE_ALLOWED, /* allowListed */ false);
                    break;
                default:
                    Log.d(TAG, "set unknown app optimization mode.");
            }
        });
    }

    /**
@@ -142,6 +135,19 @@ public class BatteryOptimizeUtils {
        return mPackageName == null ? UNKNOWN_PACKAGE : mPackageName;
    }

    private void setAppOptimizationMode(int appStandbyMode, boolean allowListed) {
        try {
            mBatteryUtils.setForceAppStandby(mUid, mPackageName, appStandbyMode);
            if (allowListed) {
                mPowerAllowListBackend.addApp(mPackageName);
            } else {
                mPowerAllowListBackend.removeApp(mPackageName);
            }
        } catch (Exception e) {
            Log.e(TAG, "set OPTIMIZED failed for " + mPackageName, e);
        }
    }

    private void refreshState() {
        mPowerAllowListBackend.refreshList();
        mAllowListed = mPowerAllowListBackend.isAllowlisted(mPackageName);
+1 −7
Original line number Diff line number Diff line
@@ -73,12 +73,6 @@ public class OptimizedPreferenceController extends AbstractPreferenceController

    @Override
    public boolean handlePreferenceTreeClick(Preference preference) {
        if (!KEY_OPTIMIZED_PREF.equals(preference.getKey())) {
            return false;
        }

        mBatteryOptimizeUtils.setAppOptimizationMode(BatteryOptimizeUtils.MODE_OPTIMIZED);
        Log.d(TAG, "Set optimized");
        return true;
        return getPreferenceKey().equals(preference.getKey());
    }
}
+1 −7
Original line number Diff line number Diff line
@@ -76,12 +76,6 @@ public class RestrictedPreferenceController extends AbstractPreferenceController

    @Override
    public boolean handlePreferenceTreeClick(Preference preference) {
        if (!KEY_RESTRICTED_PREF.equals(preference.getKey())) {
            return false;
        }

        mBatteryOptimizeUtils.setAppOptimizationMode(BatteryOptimizeUtils.MODE_RESTRICTED);
        Log.d(TAG, "Set restricted");
        return true;
        return getPreferenceKey().equals(preference.getKey());
    }
}
Loading