Update the battery broadcast receiver.
Add a type for battery receiver, then in callback client know for which reason it been invoked: 1. battery level change 2. battery saver state change 3. battery plug state change So in this CL, we won't update battery tip for battery level change, then battery tip won't be dismissed by itself. Also note in onResume() we will manually update battery tip. So if user stay in battery settings page and close the screen, once he opens it we will still force update everything. Fixes: 79171742 Test: RunSettingsRoboTests Change-Id: I997844216fd8267e545d74e0d434de9e338f76a1
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.android.settings.fuelgauge;
|
||||
|
||||
import static com.android.settings.fuelgauge.BatteryBroadcastReceiver.BatteryUpdateType;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.LoaderManager;
|
||||
import android.app.LoaderManager.LoaderCallbacks;
|
||||
@@ -279,7 +281,7 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
|
||||
} else {
|
||||
mStatsType = BatteryStats.STATS_SINCE_CHARGED;
|
||||
}
|
||||
refreshUi();
|
||||
refreshUi(BatteryUpdateType.MANUAL);
|
||||
return true;
|
||||
case MENU_ADVANCED_BATTERY:
|
||||
new SubSettingLauncher(getContext())
|
||||
@@ -293,14 +295,15 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
|
||||
}
|
||||
}
|
||||
|
||||
protected void refreshUi() {
|
||||
protected void refreshUi(@BatteryUpdateType int refreshType) {
|
||||
final Context context = getContext();
|
||||
if (context == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Only skip BatteryTipLoader for the first time when device is rotated
|
||||
if (mNeedUpdateBatteryTip) {
|
||||
// Skip BatteryTipLoader if device is rotated or only battery level change
|
||||
if (mNeedUpdateBatteryTip
|
||||
&& refreshType != BatteryUpdateType.BATTERY_LEVEL) {
|
||||
restartBatteryTipLoader();
|
||||
} else {
|
||||
mNeedUpdateBatteryTip = true;
|
||||
@@ -399,8 +402,9 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void restartBatteryStatsLoader() {
|
||||
restartBatteryStatsLoader(true /* clearHeader */);
|
||||
protected void restartBatteryStatsLoader(@BatteryUpdateType int refreshType) {
|
||||
super.restartBatteryStatsLoader(refreshType);
|
||||
mBatteryHeaderPreferenceController.quickUpdateHeaderPreference();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -409,13 +413,6 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
|
||||
mBatteryTipPreferenceController.saveInstanceState(outState);
|
||||
}
|
||||
|
||||
void restartBatteryStatsLoader(boolean clearHeader) {
|
||||
super.restartBatteryStatsLoader();
|
||||
if (clearHeader) {
|
||||
mBatteryHeaderPreferenceController.quickUpdateHeaderPreference();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBatteryTipHandled(BatteryTip batteryTip) {
|
||||
restartBatteryTipLoader();
|
||||
@@ -430,7 +427,7 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
|
||||
mContext = context;
|
||||
mLoader = loader;
|
||||
mBatteryBroadcastReceiver = new BatteryBroadcastReceiver(mContext);
|
||||
mBatteryBroadcastReceiver.setBatteryChangedListener(() -> {
|
||||
mBatteryBroadcastReceiver.setBatteryChangedListener(type -> {
|
||||
BatteryInfo.getBatteryInfo(mContext, new BatteryInfo.Callback() {
|
||||
@Override
|
||||
public void onBatteryInfoLoaded(BatteryInfo info) {
|
||||
|
Reference in New Issue
Block a user