diff options
Diffstat (limited to 'core/java/android/widget/AnalogClock.java')
-rw-r--r-- | core/java/android/widget/AnalogClock.java | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/core/java/android/widget/AnalogClock.java b/core/java/android/widget/AnalogClock.java index f847bc3..cf9c588 100644 --- a/core/java/android/widget/AnalogClock.java +++ b/core/java/android/widget/AnalogClock.java @@ -48,6 +48,7 @@ public class AnalogClock extends View { private int mDialHeight; private boolean mAttached; + private long mLastTime; private final Handler mHandler = new Handler(); private float mMinutes; @@ -95,6 +96,7 @@ public class AnalogClock extends View { protected void onAttachedToWindow() { super.onAttachedToWindow(); + onTimeChanged(); if (!mAttached) { mAttached = true; IntentFilter filter = new IntentFilter(); @@ -105,15 +107,6 @@ public class AnalogClock extends View { getContext().registerReceiver(mIntentReceiver, filter, null, mHandler); } - - // NOTE: It's safe to do these after registering the receiver since the receiver always runs - // in the main thread, therefore the receiver can't run before this method returns. - - // The time zone may have changed while the receiver wasn't registered, so update the Time - mCalendar = new Time(); - - // Make sure we update to the current time - onTimeChanged(); } @Override @@ -219,7 +212,9 @@ public class AnalogClock extends View { } private void onTimeChanged() { - mCalendar.setToNow(); + long time = System.currentTimeMillis(); + mCalendar.set(time); + mLastTime = time; int hour = mCalendar.hour; int minute = mCalendar.minute; @@ -236,6 +231,8 @@ public class AnalogClock extends View { if (intent.getAction().equals(Intent.ACTION_TIMEZONE_CHANGED)) { String tz = intent.getStringExtra("time-zone"); mCalendar = new Time(TimeZone.getTimeZone(tz).getID()); + } else { + mCalendar = new Time(); } onTimeChanged(); |