diff options
Diffstat (limited to 'src/com/android/settings/display/AdaptiveSleepBatterySaverPreferenceController.java')
-rw-r--r-- | src/com/android/settings/display/AdaptiveSleepBatterySaverPreferenceController.java | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/com/android/settings/display/AdaptiveSleepBatterySaverPreferenceController.java b/src/com/android/settings/display/AdaptiveSleepBatterySaverPreferenceController.java index 855c5070bf..528c94d7d8 100644 --- a/src/com/android/settings/display/AdaptiveSleepBatterySaverPreferenceController.java +++ b/src/com/android/settings/display/AdaptiveSleepBatterySaverPreferenceController.java @@ -32,23 +32,20 @@ import com.android.settingslib.widget.BannerMessagePreference; public class AdaptiveSleepBatterySaverPreferenceController { @VisibleForTesting - final BannerMessagePreference mPreference; + BannerMessagePreference mPreference; private final PowerManager mPowerManager; + private final Context mContext; public AdaptiveSleepBatterySaverPreferenceController(Context context) { - mPreference = new BannerMessagePreference(context); - mPreference.setTitle(R.string.ambient_camera_summary_battery_saver_on); - mPreference.setPositiveButtonText(R.string.disable_text); mPowerManager = context.getSystemService(PowerManager.class); - mPreference.setPositiveButtonOnClickListener(p -> { - mPowerManager.setPowerSaveModeEnabled(false); - }); + mContext = context; } /** * Adds the controlled preference to the provided preference screen. */ public void addToScreen(PreferenceScreen screen) { + initializePreference(); screen.addPreference(mPreference); updateVisibility(); } @@ -66,6 +63,17 @@ public class AdaptiveSleepBatterySaverPreferenceController { * Refreshes the visibility of the preference. */ public void updateVisibility() { + initializePreference(); mPreference.setVisible(isPowerSaveMode()); } + + private void initializePreference() { + if (mPreference == null) { + mPreference = new BannerMessagePreference(mContext); + mPreference.setTitle(R.string.ambient_camera_summary_battery_saver_on); + mPreference.setPositiveButtonText(R.string.disable_text); + mPreference.setPositiveButtonOnClickListener( + p -> mPowerManager.setPowerSaveModeEnabled(false)); + } + } } |