From 33612098b37f9c061dd03d4752f4421bce88aa76 Mon Sep 17 00:00:00 2001 From: ykhung Date: Wed, 6 Oct 2021 04:01:17 +0800 Subject: [PATCH] Post UI update later a while to avoid screen sluggish as possible When users turned on/off the saver mode, the system is busy in update configurations and the dark/light theme, we should avoid updating the UI in the same time to makes users feel the animation is not smooth Bug: 201752975 Test: make -j64 RunSettingsRoboTests Change-Id: I4c28af267616f796438a505e84ce376321c74981 --- .../BatterySaverButtonPreferenceController.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java index 59a592c6c78..1a7fa38be31 100644 --- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java +++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java @@ -19,6 +19,8 @@ package com.android.settings.fuelgauge.batterysaver; import android.content.ContentResolver; import android.content.Context; import android.net.Uri; +import android.os.Handler; +import android.os.Looper; import android.os.PowerManager; import android.provider.SettingsSlicesContract; import android.widget.Switch; @@ -42,10 +44,12 @@ import com.android.settingslib.widget.OnMainSwitchChangeListener; public class BatterySaverButtonPreferenceController extends TogglePreferenceController implements OnMainSwitchChangeListener, LifecycleObserver, OnStart, OnStop, BatterySaverReceiver.BatterySaverListener { + private static final long SWITCH_ANIMATION_DURATION = 350L; private final BatterySaverReceiver mBatterySaverReceiver; private final PowerManager mPowerManager; + private Handler mHandler; private MainSwitchPreference mPreference; public BatterySaverButtonPreferenceController(Context context, String key) { @@ -53,6 +57,7 @@ public class BatterySaverButtonPreferenceController extends mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); mBatterySaverReceiver = new BatterySaverReceiver(context); mBatterySaverReceiver.setBatterySaverListener(this); + mHandler = new Handler(Looper.getMainLooper()); } @Override @@ -83,6 +88,7 @@ public class BatterySaverButtonPreferenceController extends @Override public void onStop() { mBatterySaverReceiver.setListening(false); + mHandler.removeCallbacksAndMessages(null /* token */); } @Override @@ -114,6 +120,11 @@ public class BatterySaverButtonPreferenceController extends @Override public void onPowerSaveModeChanged() { + mHandler.postDelayed(() -> onPowerSaveModeChangedInternal(), + SWITCH_ANIMATION_DURATION); + } + + private void onPowerSaveModeChangedInternal() { final boolean isChecked = isChecked(); if (mPreference != null && mPreference.isChecked() != isChecked) { mPreference.setChecked(isChecked);