Transition BatteryInfo and BatteryUtils to BatteryUsageStats API
Bug: 173745486 Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.fuelgauge.BatteryHistoryPreferenceTest Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.fuelgauge.BatteryInfoLoaderTest Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.fuelgauge.BatteryInfoTest Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.fuelgauge.BatteryUtilsTest Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.fuelgauge.batterytip.detectors Change-Id: I469ff8b88aa3307422c02f51943df4ef1759db56
This commit is contained in:
@@ -19,10 +19,12 @@ import static com.android.settings.fuelgauge.BatteryBroadcastReceiver.BatteryUpd
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.os.BatteryUsageStats;
|
||||
import android.os.Bundle;
|
||||
import android.os.UserManager;
|
||||
import android.view.Menu;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.loader.app.LoaderManager;
|
||||
import androidx.loader.content.Loader;
|
||||
@@ -40,12 +42,29 @@ public abstract class PowerUsageBase extends DashboardFragment {
|
||||
static final int MENU_STATS_REFRESH = Menu.FIRST + 1;
|
||||
private static final String TAG = "PowerUsageBase";
|
||||
private static final String KEY_REFRESH_TYPE = "refresh_type";
|
||||
private static final String KEY_INCLUDE_HISTORY = "include_history";
|
||||
|
||||
private static final int LOADER_BATTERY_STATS_HELPER = 0;
|
||||
private static final int LOADER_BATTERY_USAGE_STATS = 1;
|
||||
|
||||
protected BatteryStatsHelper mStatsHelper;
|
||||
@VisibleForTesting
|
||||
BatteryUsageStats mBatteryUsageStats;
|
||||
|
||||
protected UserManager mUm;
|
||||
private BatteryBroadcastReceiver mBatteryBroadcastReceiver;
|
||||
protected boolean mIsBatteryPresent = true;
|
||||
|
||||
// TODO(b/180630447): switch to BatteryUsageStatsLoader and remove all references to
|
||||
// BatteryStatsHelper and BatterySipper
|
||||
@VisibleForTesting
|
||||
final BatteryStatsHelperLoaderCallbacks mBatteryStatsHelperLoaderCallbacks =
|
||||
new BatteryStatsHelperLoaderCallbacks();
|
||||
|
||||
@VisibleForTesting
|
||||
final BatteryUsageStatsLoaderCallbacks mBatteryUsageStatsLoaderCallbacks =
|
||||
new BatteryUsageStatsLoaderCallbacks();
|
||||
|
||||
@Override
|
||||
public void onAttach(Activity activity) {
|
||||
super.onAttach(activity);
|
||||
@@ -83,42 +102,73 @@ public abstract class PowerUsageBase extends DashboardFragment {
|
||||
protected void restartBatteryStatsLoader(int refreshType) {
|
||||
final Bundle bundle = new Bundle();
|
||||
bundle.putInt(KEY_REFRESH_TYPE, refreshType);
|
||||
bundle.putBoolean(KEY_INCLUDE_HISTORY, isBatteryHistoryNeeded());
|
||||
getLoaderManager().restartLoader(LOADER_BATTERY_STATS_HELPER, bundle,
|
||||
mBatteryStatsHelperLoaderCallbacks);
|
||||
getLoaderManager().restartLoader(LOADER_BATTERY_USAGE_STATS, bundle,
|
||||
mBatteryUsageStatsLoaderCallbacks);
|
||||
}
|
||||
|
||||
getLoaderManager().restartLoader(0, bundle, new PowerLoaderCallback());
|
||||
private void onLoadFinished(@BatteryUpdateType int refreshType) {
|
||||
// Wait for both loaders to finish before proceeding.
|
||||
if (mStatsHelper == null || mBatteryUsageStats == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
refreshUi(refreshType);
|
||||
}
|
||||
|
||||
protected abstract void refreshUi(@BatteryUpdateType int refreshType);
|
||||
protected abstract boolean isBatteryHistoryNeeded();
|
||||
|
||||
protected void updatePreference(BatteryHistoryPreference historyPref) {
|
||||
final long startTime = System.currentTimeMillis();
|
||||
historyPref.setStats(mStatsHelper);
|
||||
historyPref.setBatteryUsageStats(mBatteryUsageStats);
|
||||
BatteryUtils.logRuntime(TAG, "updatePreference", startTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link android.app.LoaderManager.LoaderCallbacks} for {@link PowerUsageBase} to load
|
||||
* the {@link BatteryStatsHelper}
|
||||
*/
|
||||
public class PowerLoaderCallback implements LoaderManager.LoaderCallbacks<BatteryStatsHelper> {
|
||||
private class BatteryStatsHelperLoaderCallbacks
|
||||
implements LoaderManager.LoaderCallbacks<BatteryStatsHelper> {
|
||||
private int mRefreshType;
|
||||
|
||||
@Override
|
||||
public Loader<BatteryStatsHelper> onCreateLoader(int id,
|
||||
Bundle args) {
|
||||
public Loader<BatteryStatsHelper> onCreateLoader(int id, Bundle args) {
|
||||
mRefreshType = args.getInt(KEY_REFRESH_TYPE);
|
||||
return new BatteryStatsHelperLoader(getContext());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(Loader<BatteryStatsHelper> loader,
|
||||
BatteryStatsHelper statsHelper) {
|
||||
mStatsHelper = statsHelper;
|
||||
refreshUi(mRefreshType);
|
||||
BatteryStatsHelper batteryHelper) {
|
||||
mStatsHelper = batteryHelper;
|
||||
PowerUsageBase.this.onLoadFinished(mRefreshType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoaderReset(Loader<BatteryStatsHelper> loader) {
|
||||
}
|
||||
}
|
||||
|
||||
private class BatteryUsageStatsLoaderCallbacks
|
||||
implements LoaderManager.LoaderCallbacks<BatteryUsageStats> {
|
||||
private int mRefreshType;
|
||||
|
||||
@Override
|
||||
@NonNull
|
||||
public Loader<BatteryUsageStats> onCreateLoader(int id, Bundle args) {
|
||||
mRefreshType = args.getInt(KEY_REFRESH_TYPE);
|
||||
return new BatteryUsageStatsLoader(getContext(), args.getBoolean(KEY_INCLUDE_HISTORY));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(Loader<BatteryUsageStats> loader,
|
||||
BatteryUsageStats batteryUsageStats) {
|
||||
mBatteryUsageStats = batteryUsageStats;
|
||||
PowerUsageBase.this.onLoadFinished(mRefreshType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoaderReset(Loader<BatteryUsageStats> loader) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user