SystemClock 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
核心守时设施。
[Android.Runtime.Register("android/os/SystemClock", DoNotGenerateAcw=true)]
public sealed class SystemClock : Java.Lang.Object
[<Android.Runtime.Register("android/os/SystemClock", DoNotGenerateAcw=true)>]
type SystemClock = class
inherit Object
- 继承
- 属性
注解
核心守时设施。
有三个不同的时钟可用,它们不应混淆:
<ul><li>
System#currentTimeMillis System.currentTimeMillis() 是标准“壁”时钟(时间和日期)表示自纪元以来的毫秒数。 时钟可由用户或电话网络设置(见 #setCurrentTimeMillis),因此时间可能会向后或向前跳转不可预知。 仅当与实际日期和时间的对应关系非常重要(例如日历或闹钟应用程序中)时,才应使用此时钟。 间隔或已用时间度量应使用不同的时钟。 如果使用 System.currentTimeMillis(),请考虑侦 android.content.Intent#ACTION_TIME_TICK ACTION_TIME_TICK听和 android.content.Intent#ACTION_TIME_CHANGED ACTION_TIME_CHANGEDandroid.content.Intent#ACTION_TIMEZONE_CHANGED ACTION_TIMEZONE_CHANGEDandroid.content.Intent Intent 广播,以确定时间何时发生更改。
<li>
#uptimeMillis 自系统启动以来的计数(以毫秒为单位)。 当系统进入深度睡眠(CPU 关闭、显示深色、等待外部输入的设备)时,此时钟将停止,但不受时钟缩放、空闲或其他节能机制的影响。 这是大多数间隔时间的基础,例如 Thread#sleep(long) Thread.sleep(millis), Object#wait(long) Object.wait(millis)和 System#nanoTime System.nanoTime()。 此时钟保证为单调,适合间隔不跨越设备睡眠时的间隔时间。 接受时间戳值的大多数方法当前需要 #uptimeMillis 时钟。
<li>
#elapsedRealtime 并 #elapsedRealtimeNanos 返回系统启动后的时间,并包括深度睡眠。 此时钟保证为单调时钟,即使在 CPU 处于省电模式时,也会继续计时,因此建议使用常规用途间隔计时的基础。
</ul>
有多种机制可用于控制事件的计时:
<ul><li>
标准函数(如 Thread#sleep(long) Thread.sleep(millis) 且 Object#wait(long) Object.wait(millis) 始终可用)。 这些函数使用 #uptimeMillis 时钟;如果设备进入睡眠状态,则剩余时间将推迟到设备唤醒。 这些同步函数可能会中断 Thread#interrupt Thread.interrupt(),必须处理 InterruptedException。
<li>
#sleep SystemClock.sleep(millis) 是一个实用工具函数,它与它非常相似 Thread#sleep(long) Thread.sleep(millis),但它忽略 InterruptedException。 如果不使用 Thread#interrupt Thread.interrupt(),请使用此函数进行延迟,因为它将保留线程的中断状态。
<li>
该 android.os.Handler 类可以在绝对或相对时间计划异步回调。 处理程序对象还使用 #uptimeMillis 时钟,并且需要( android.os.Looper event loop 通常存在于任何 GUI 应用程序中)。
<li>
可以 android.app.AlarmManager 触发一次性或定期事件,即使设备处于深度睡眠状态或应用程序未运行也是如此。 事件可以按你选择( java.lang.System#currentTimeMillis RTC)或 #elapsedRealtime (ELAPSED_REALTIME)进行计划,并在事件发生时进行 android.content.Intent 广播。
</ul>
适用于 . 的 android.os.SystemClockJava 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
属性
| 名称 | 说明 |
|---|---|
| Class |
返回此 |
| Handle |
基础 Android 实例的句柄。 (继承自 Object) |
| JniIdentityHashCode |
核心守时设施。 (继承自 Object) |
| JniPeerMembers |
核心守时设施。 |
| PeerReference |
核心守时设施。 (继承自 Object) |
| ThresholdClass |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 (继承自 Object) |
| ThresholdType |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 (继承自 Object) |
方法
| 名称 | 说明 |
|---|---|
| Clone() |
创建并返回此对象的副本。 (继承自 Object) |
| CurrentGnssTimeClock() |
返回从 |
| CurrentNetworkTimeClock() |
返回从 |
| CurrentThreadTimeMillis() |
返回在当前线程中运行的毫秒数。 |
| Dispose() |
核心守时设施。 (继承自 Object) |
| Dispose(Boolean) |
核心守时设施。 (继承自 Object) |
| ElapsedRealtime() |
返回自启动以来的毫秒数,包括睡眠时间。 |
| ElapsedRealtimeNanos() |
返回自启动以来的纳秒数,包括睡眠时间。 |
| Equals(Object) |
指示其他对象是否“等于”此对象。 (继承自 Object) |
| GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
| JavaFinalize() |
当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。 (继承自 Object) |
| Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
| NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
| SetCurrentTimeMillis(Int64) |
设置当前墙时间(以毫秒为单位)。 |
| SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
| Sleep(Int64) |
在返回之前等待给定的毫秒数(运行时间Millis)。 |
| ToArray<T>() |
核心守时设施。 (继承自 Object) |
| ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
| UnregisterFromRuntime() |
核心守时设施。 (继承自 Object) |
| UptimeMillis() |
返回自启动以来的毫秒数,不计算在深度睡眠中花费的时间。 |
| UptimeNanos() |
返回自启动以来的纳秒数,不计算在深度睡眠中花费的时间。 |
| Wait() |
使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><> (继承自 Object) |
| Wait(Int64, Int32) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。 (继承自 Object) |
| Wait(Int64) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。 (继承自 Object) |
显式接口实现
| 名称 | 说明 |
|---|---|
| IJavaPeerable.Disposed() |
核心守时设施。 (继承自 Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
核心守时设施。 (继承自 Object) |
| IJavaPeerable.Finalized() |
核心守时设施。 (继承自 Object) |
| IJavaPeerable.JniManagedPeerState |
核心守时设施。 (继承自 Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
核心守时设施。 (继承自 Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
核心守时设施。 (继承自 Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
核心守时设施。 (继承自 Object) |
扩展方法
| 名称 | 说明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
获取实例 |
| JavaAs<TResult>(IJavaPeerable) |
尝试强制 |
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
核心守时设施。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
尝试强制 |