summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author yangyankai1 <yangyankai1@xiaomi.com> 2020-10-12 15:13:24 +0800
committer yangyankai1 <yangyankai1@xiaomi.com> 2020-10-12 15:13:24 +0800
commitea86d71308fad8e05398f653034e1714b2b98e28 (patch)
treebae24d5d8ffe31302bc044c602f85534058cc91f
parent19189d886b32928e9da0c96108310a42c0db2c1f (diff)
AutoBrightness: Remove handler's messages before send.
The contentprovider's callback 'onChange(...)' is asynchronous. If one app set the 'screen_brightness' provider frequently over a period of time, the contentprovider's 'onChange(...)' can't stop, just like 'Self-exciting oscillation'. So, We need remove handler's messages before send. Test: build pass, feature pass. TestCase: set the 'screen_brightness' provider frequently, can use a loop: for(i=0;i<1000;i++){put(...)}. Signed-off-by: yangyankai1 <yangyankai1@xiaomi.com> Change-Id: I346696c69623829d4dda372edaf35b6e3f147780
-rw-r--r--core/java/com/android/internal/BrightnessSynchronizer.java2
1 files changed, 2 insertions, 0 deletions
diff --git a/core/java/com/android/internal/BrightnessSynchronizer.java b/core/java/com/android/internal/BrightnessSynchronizer.java
index 42724bede481..8ff3c497662c 100644
--- a/core/java/com/android/internal/BrightnessSynchronizer.java
+++ b/core/java/com/android/internal/BrightnessSynchronizer.java
@@ -259,10 +259,12 @@ public class BrightnessSynchronizer{
}
if (BRIGHTNESS_URI.equals(uri)) {
int currentBrightness = getScreenBrightnessInt(mContext);
+ mHandler.removeMessages(MSG_UPDATE_FLOAT);
mHandler.obtainMessage(MSG_UPDATE_FLOAT, currentBrightness, 0).sendToTarget();
} else if (BRIGHTNESS_FLOAT_URI.equals(uri)) {
float currentFloat = getScreenBrightnessFloat(mContext);
int toSend = Float.floatToIntBits(currentFloat);
+ mHandler.removeMessages(MSG_UPDATE_INT);
mHandler.obtainMessage(MSG_UPDATE_INT, toSend, 0).sendToTarget();
}
}