From 2f16bc8a3a833c89863a39feb6a05dac78f2f8ea Mon Sep 17 00:00:00 2001 From: Aurimas Liutikas Date: Tue, 28 Feb 2017 12:16:57 -0800 Subject: [PATCH] Do not send onTimeChanged updates if nothing actually changed. Bug: 29314380 Test: android.widget.cts.TimePickerTest#testSetOnTimeChangedListener now passes. Change-Id: I4df96cd306967027ea76e2c256b50ca687eae9ba --- core/java/android/widget/TimePickerClockDelegate.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core/java/android/widget/TimePickerClockDelegate.java b/core/java/android/widget/TimePickerClockDelegate.java index 3a0906393b978..94bd342c9b9b3 100644 --- a/core/java/android/widget/TimePickerClockDelegate.java +++ b/core/java/android/widget/TimePickerClockDelegate.java @@ -813,8 +813,12 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { private final OnValueSelectedListener mOnValueSelectedListener = new OnValueSelectedListener() { @Override public void onValueSelected(int pickerType, int newValue, boolean autoAdvance) { + boolean valueChanged = false; switch (pickerType) { case RadialTimePickerView.HOURS: + if (getHour() != newValue) { + valueChanged = true; + } final boolean isTransition = mAllowAutoAdvance && autoAdvance; setHourInternal(newValue, FROM_RADIAL_PICKER, !isTransition); if (isTransition) { @@ -825,11 +829,14 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { } break; case RadialTimePickerView.MINUTES: + if (getMinute() != newValue) { + valueChanged = true; + } setMinuteInternal(newValue, FROM_RADIAL_PICKER); break; } - if (mOnTimeChangedListener != null) { + if (mOnTimeChangedListener != null && valueChanged) { mOnTimeChangedListener.onTimeChanged(mDelegator, getHour(), getMinute()); } }