diff options
author | James Lemieux <jplemieux@google.com> | 2017-02-01 16:42:09 -0800 |
---|---|---|
committer | James Lemieux <jplemieux@google.com> | 2017-02-01 16:42:09 -0800 |
commit | 22e6309fcd8d0fa027ee7bbef988ff7e9c426b12 (patch) | |
tree | 27872cc6f2151c68729a5b128e53254bf529746d /src | |
parent | 63669870c5677e73c61ae81dd7469abccb51d629 (diff) | |
download | android_packages_apps_DeskClock-22e6309fcd8d0fa027ee7bbef988ff7e9c426b12.tar.gz android_packages_apps_DeskClock-22e6309fcd8d0fa027ee7bbef988ff7e9c426b12.tar.bz2 android_packages_apps_DeskClock-22e6309fcd8d0fa027ee7bbef988ff7e9c426b12.zip |
Disable seconds on the unseen clock depending on style
Bug: 34856983
Test: Manually test adjusting all combinations of clock style and seconds
This has two benefits:
1) the unseen clock no longer schedules one second callbacks to update a
GONE component
2) It avoids the reported exception caused by Activity.recreate()
Change-Id: I0a1a3e30a5e4ae6c751a2285ca25f4470fc2bb9d
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/deskclock/ClockFragment.java | 23 | ||||
-rw-r--r-- | src/com/android/deskclock/Utils.java | 23 |
2 files changed, 27 insertions, 19 deletions
diff --git a/src/com/android/deskclock/ClockFragment.java b/src/com/android/deskclock/ClockFragment.java index 949897405..7afe72da0 100644 --- a/src/com/android/deskclock/ClockFragment.java +++ b/src/com/android/deskclock/ClockFragment.java @@ -129,12 +129,9 @@ public final class ClockFragment extends DeskClockFragment { mDigitalClock = (TextClock) mClockFrame.findViewById(R.id.digital_clock); mAnalogClock = (AnalogClock) mClockFrame.findViewById(R.id.analog_clock); Utils.setClockIconTypeface(mClockFrame); - Utils.refreshAlarm(context, mClockFrame); - boolean enableSeconds = DataModel.getDataModel().getDisplayClockSeconds(); - Utils.setTimeFormat(mDigitalClock, enableSeconds); - mAnalogClock.enableSeconds(enableSeconds); Utils.updateDate(mDateFormat, mDateFormatForAccessibility, mClockFrame); Utils.setClockStyle(mDigitalClock, mAnalogClock); + Utils.setClockSecondsEnabled(mDigitalClock, mAnalogClock); } // Schedule a runnable to update the date every quarter hour. @@ -144,15 +141,6 @@ public final class ClockFragment extends DeskClockFragment { } @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - - if (mDigitalClock != null) { - Utils.setTimeFormat(mDigitalClock, DataModel.getDataModel().getDisplayClockSeconds()); - } - } - - @Override public void onResume() { super.onResume(); @@ -167,9 +155,10 @@ public final class ClockFragment extends DeskClockFragment { activity.registerReceiver(mAlarmChangeReceiver, filter); } - // Resume can be invoked after changing the clock style. + // Resume can be invoked after changing the clock style or seconds display. if (mDigitalClock != null && mAnalogClock != null) { Utils.setClockStyle(mDigitalClock, mAnalogClock); + Utils.setClockSecondsEnabled(mDigitalClock, mAnalogClock); } final View view = getView(); @@ -547,13 +536,11 @@ public final class ClockFragment extends DeskClockFragment { String dateFormatForAccessibility, boolean showHairline) { Utils.refreshAlarm(context, itemView); - final boolean displaySeconds = DataModel.getDataModel().getDisplayClockSeconds(); - Utils.setTimeFormat(mDigitalClock, displaySeconds); - mAnalogClock.enableSeconds(displaySeconds); - Utils.updateDate(dateFormat, dateFormatForAccessibility, itemView); Utils.setClockStyle(mDigitalClock, mAnalogClock); mHairline.setVisibility(showHairline ? VISIBLE : GONE); + + Utils.setClockSecondsEnabled(mDigitalClock, mAnalogClock); } } } diff --git a/src/com/android/deskclock/Utils.java b/src/com/android/deskclock/Utils.java index a7261f17e..e9a3b40d9 100644 --- a/src/com/android/deskclock/Utils.java +++ b/src/com/android/deskclock/Utils.java @@ -202,7 +202,28 @@ public class Utils { } /** - * For screensavers to set whether the digital or analog clock should be displayed. + * Configure the clock that is visible to display seconds. The clock that is not visible never + * displays seconds to avoid it scheduling unnecessary ticking runnables. + */ + public static void setClockSecondsEnabled(TextClock digitalClock, AnalogClock analogClock) { + final boolean displaySeconds = DataModel.getDataModel().getDisplayClockSeconds(); + final DataModel.ClockStyle clockStyle = DataModel.getDataModel().getClockStyle(); + switch (clockStyle) { + case ANALOG: + setTimeFormat(digitalClock, false); + analogClock.enableSeconds(displaySeconds); + return; + case DIGITAL: + analogClock.enableSeconds(false); + setTimeFormat(digitalClock, displaySeconds); + return; + } + + throw new IllegalStateException("unexpected clock style: " + clockStyle); + } + + /** + * Set whether the digital or analog clock should be displayed in the application. * Returns the view to be displayed. */ public static View setClockStyle(View digitalClock, View analogClock) { |