From 70304cff075e1a7c81eb6884c2661253aa1990ad Mon Sep 17 00:00:00 2001 From: ykhung Date: Wed, 7 Jul 2021 15:15:13 +0800 Subject: [PATCH] Add new method to get URI to monitor battery history data is updated we will reload the database battery history data if its content is changed, which can be done through monitored the database content observer (a part of this patch cl/383366685) Bug: 192613268 Test: make SettingsRoboTests Change-Id: I24ab154b1dfa00ca4bf4e6f7b308f5061578bcb5 --- .../fuelgauge/PowerUsageAdvanced.java | 29 +++++++++++++++++++ .../fuelgauge/PowerUsageFeatureProvider.java | 6 ++++ .../PowerUsageFeatureProviderImpl.java | 6 ++++ 3 files changed, 41 insertions(+) diff --git a/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java b/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java index 7c696184af6..afbb71f9ed0 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java +++ b/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java @@ -19,8 +19,11 @@ import android.app.settings.SettingsEnums; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.database.ContentObserver; +import android.net.Uri; import android.os.BatteryManager; import android.os.Bundle; +import android.os.Handler; import android.provider.SearchIndexableResource; import android.util.Log; @@ -31,6 +34,7 @@ import androidx.loader.content.Loader; import com.android.settings.R; import com.android.settings.SettingsActivity; +import com.android.settings.fuelgauge.BatteryBroadcastReceiver; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.core.AbstractPreferenceController; @@ -63,6 +67,17 @@ public class PowerUsageAdvanced extends PowerUsageBase { private BatteryChartPreferenceController mBatteryChartPreferenceController; private BatteryAppListPreferenceController mBatteryAppListPreferenceController; + private final ContentObserver mBatteryObserver = + new ContentObserver(new Handler()) { + @Override + public void onChange(boolean selfChange) { + Log.d(TAG, "onBatteryContentChange: " + selfChange); + mIsChartDataLoaded = false; + restartBatteryStatsLoader( + BatteryBroadcastReceiver.BatteryUpdateType.MANUAL); + } + }; + @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -104,6 +119,20 @@ public class PowerUsageAdvanced extends PowerUsageBase { super.onPause(); // Resets the flag to reload usage data in onResume() callback. mIsChartDataLoaded = false; + final Uri uri = mPowerUsageFeatureProvider.getBatteryHistoryUri(); + if (uri != null) { + getContext().getContentResolver().unregisterContentObserver(mBatteryObserver); + } + } + + @Override + public void onResume() { + super.onResume(); + final Uri uri = mPowerUsageFeatureProvider.getBatteryHistoryUri(); + if (uri != null) { + getContext().getContentResolver().registerContentObserver( + uri, /*notifyForDescendants*/ true, mBatteryObserver); + } } @Override diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java index 61abe6b1fbf..d91482598e2 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java @@ -18,6 +18,7 @@ package com.android.settings.fuelgauge; import android.content.Context; import android.content.Intent; +import android.net.Uri; import android.util.SparseIntArray; import com.android.internal.os.BatterySipper; @@ -141,4 +142,9 @@ public interface PowerUsageFeatureProvider { * Returns battery history data with corresponding timestamp key. */ Map> getBatteryHistory(Context context); + + /** + * Returns {@link Uri} to monitor battery history data is update. + */ + Uri getBatteryHistoryUri(); } diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java index 1dcdab08be5..895bbb2a454 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java @@ -19,6 +19,7 @@ package com.android.settings.fuelgauge; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.net.Uri; import android.os.Process; import android.util.SparseIntArray; @@ -167,4 +168,9 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider public Map> getBatteryHistory(Context context) { return null; } + + @Override + public Uri getBatteryHistoryUri() { + return null; + } }