summaryrefslogtreecommitdiffstats
path: root/core/java/android/widget/AnalogClock.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/widget/AnalogClock.java')
-rw-r--r--core/java/android/widget/AnalogClock.java17
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();