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
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user