From a7a0949a35f7ac498ac1669ff4379efc0ca529bd Mon Sep 17 00:00:00 2001 From: mxyyiyi Date: Wed, 16 Aug 2023 13:21:56 +0800 Subject: [PATCH] Update the detect & show pipeline for PowerAnomalyEventList. Test: make SettingsLibRoboTests Bug: 293813663 (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:f978f8b045c2d08e07735f0e7c2b343d53fb5580) Change-Id: I4a5a550b8c1a2317468e8cc4bd8c2b594c4208ac --- res/layout/battery_tips_card.xml | 5 ++- .../BatteryChartPreferenceController.java | 34 +++++++++++++------ .../BatteryTipsCardPreference.java | 1 + 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/res/layout/battery_tips_card.xml b/res/layout/battery_tips_card.xml index 2fa5bf2ae4c..dde559d4b0f 100644 --- a/res/layout/battery_tips_card.xml +++ b/res/layout/battery_tips_card.xml @@ -28,7 +28,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" - android:maxLines="2" android:textAlignment="viewStart" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="?android:attr/textColorPrimary" /> @@ -45,7 +44,7 @@ style="@style/Widget.Material3.Button.TextButton" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="end" + android:layout_gravity="end|center_vertical" android:paddingHorizontal="16dp" android:layout_marginEnd="8dp" android:text="@string/battery_tips_card_dismiss_button" @@ -59,7 +58,7 @@ android:paddingHorizontal="16dp" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="end" + android:layout_gravity="end|center_vertical" android:text="@string/battery_tips_card_action_button" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="?android:attr/textColorPrimary" diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java index d2ca306480f..22ff1963492 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java @@ -44,6 +44,7 @@ import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnCreate; import com.android.settingslib.core.lifecycle.events.OnDestroy; +import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState; @@ -51,14 +52,17 @@ import com.google.common.base.Objects; import java.util.ArrayList; import java.util.Calendar; +import java.util.Collections; +import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicBoolean; /** Controls the update for chart graph and the list items. */ public class BatteryChartPreferenceController extends AbstractPreferenceController - implements PreferenceControllerMixin, LifecycleObserver, OnCreate, OnDestroy, + implements PreferenceControllerMixin, LifecycleObserver, OnCreate, OnDestroy, OnPause, OnSaveInstanceState, OnResume { private static final String TAG = "BatteryChartPreferenceController"; private static final String PREFERENCE_KEY = "battery_chart"; @@ -136,6 +140,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll private OnBatteryUsageUpdatedListener mOnBatteryUsageUpdatedListener; private OnScreenOnTimeUpdatedListener mOnScreenOnTimeUpdatedListener; private OnBatteryTipsUpdatedListener mOnBatteryTipsUpdatedListener; + private AtomicBoolean mIsAppResume = new AtomicBoolean(false); private final SettingsActivity mActivity; private final MetricsFeatureProvider mMetricsFeatureProvider; @@ -180,9 +185,15 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll Log.d(TAG, String.format("onCreate() dailyIndex=%d hourlyIndex=%d", mDailyChartIndex, mHourlyChartIndex)); } + @Override + public void onPause() { + mIsAppResume.compareAndSet(/* expect= */ true, /* update= */ false); + } + @Override public void onResume() { + mIsAppResume.compareAndSet(/* expect= */ false, /* update= */ true); mIs24HourFormat = DateFormat.is24HourFormat(mContext); mMetricsFeatureProvider.action(mPrefContext, SettingsEnums.OPEN_BATTERY_USAGE); } @@ -370,14 +381,22 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll mOnBatteryUsageUpdatedListener.onBatteryUsageUpdated( slotUsageData, getSlotInformation(), isBatteryUsageMapNullOrEmpty()); + Log.d(TAG, "isBatteryTipsEnabled = " + + mPowerUsageFeatureProvider.isBatteryTipsEnabled()); if (mOnBatteryTipsUpdatedListener != null) { mExecutor.execute(() -> { final PowerAnomalyEventList anomalyEventList = mPowerUsageFeatureProvider .detectSettingsAnomaly(mContext, /* displayDrain= */ 0); + Log.d(TAG, "anomalyEventList = " + anomalyEventList); final PowerAnomalyEvent displayEvent = getHighestScoreAnomalyEvent(anomalyEventList); - mHandler.post(() - -> mOnBatteryTipsUpdatedListener.onBatteryTipsUpdated(displayEvent)); + mHandler.post(() -> { + if (mIsAppResume.get()) { + mOnBatteryTipsUpdatedListener + .onBatteryTipsUpdated(displayEvent); + } + } + ); }); } } @@ -388,13 +407,8 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll if (anomalyEventList == null || anomalyEventList.getPowerAnomalyEventsCount() == 0) { return null; } - PowerAnomalyEvent highestScoreEvent = null; - for (PowerAnomalyEvent event : anomalyEventList.getPowerAnomalyEventsList()) { - if (highestScoreEvent == null || event.getScore() > highestScoreEvent.getScore()) { - highestScoreEvent = event; - } - } - return highestScoreEvent; + return Collections.max(anomalyEventList.getPowerAnomalyEventsList(), + Comparator.comparing(PowerAnomalyEvent::getScore)); } private boolean refreshUiWithNoLevelDataCase() { diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreference.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreference.java index 976897f7991..1a431fa774c 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreference.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreference.java @@ -101,6 +101,7 @@ public class BatteryTipsCardPreference extends Preference implements View.OnClic .setDestination(mDestinationComponentName) .setSourceMetricsCategory(mSourceMetricsCategory) .launch(); + setVisible(false); } else if (viewId == R.id.dismiss_button) { setVisible(false); }