Core timekeeping facilities.
See Also:
SystemClock Members
Syntax
[Android.Runtime.Register("android/os/SystemClock", DoNotGenerateAcw=true)]
public sealed class
SystemClock :
Java.Lang.ObjectRemarks
Core timekeeping facilities.
Three different clocks are available, and they should not be confused:
- Java.Lang.JavaSystem.CurrentTimeMillis
is the standard "wall" clock (time and date) expressing milliseconds
since the epoch. The wall clock can be set by the user or the phone
network (see SystemClock.SetCurrentTimeMillis(long)), so the time may jump
backwards or forwards unpredictably. This clock should only be used
when correspondence with real-world dates and times is important, such
as in a calendar or alarm clock application. Interval or elapsed
time measurements should use a different clock. If you are using
System.currentTimeMillis(), consider listening to the
Android.Content.Intent.ActionTimeTick,
Android.Content.Intent.ActionTimeChanged
and Android.Content.Intent.ActionTimezoneChangedAndroid.Content.Intent
broadcasts to find out when the time changes.
- SystemClock.UptimeMillis is counted in milliseconds since the
system was booted. This clock stops when the system enters deep
sleep (CPU off, display dark, device waiting for external input),
but is not affected by clock scaling, idle, or other power saving
mechanisms. This is the basis for most interval timing
such as Java.Lang.Thread.Sleep(long),
Java.Lang.Object.Wait(long), and
Java.Lang.JavaSystem.NanoTime. This clock is guaranteed
to be monotonic, and is suitable for interval timing when the
interval does not span device sleep. Most methods that accept a
timestamp value currently expect the SystemClock.UptimeMillis clock.
- SystemClock.ElapsedRealtime and SystemClock.ElapsedRealtimeNanos
return the time since the system was booted, and include deep sleep.
This clock is guaranteed to be monotonic, and continues to tick even
when the CPU is in power saving modes, so is the recommend basis
for general purpose interval timing.
There are several mechanisms for controlling the timing of events:
[Android Documentation]
Requirements
Namespace: Android.OS
Assembly: Mono.Android (in Mono.Android.dll)
Assembly Versions: 0.0.0.0
Since: Added in API level 1