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()
是標準「牆」時鐘(時間和日期),表示自 epoch 以來的毫秒數。 時鐘可由使用者或電話網路設定(見 #setCurrentTimeMillis
),因此時間可能會向後或向前跳躍無法預測。 只有當與真實世界日期和時間的對應很重要時,才應該使用這個時鐘,例如在行事曆或鬧鐘應用程式中。 間隔或經過的時間度量應該使用不同的時鐘。 如果您使用 System.currentTimeMillis(),請考慮接 android.content.Intent#ACTION_TIME_TICK ACTION_TIME_TICK
聽 , android.content.Intent#ACTION_TIME_CHANGED ACTION_TIME_CHANGED
並 android.content.Intent#ACTION_TIMEZONE_CHANGED ACTION_TIMEZONE_CHANGED
android.content.Intent Intent
廣播以找出時間何時變更。
<李>
#uptimeMillis
會以毫秒為單位計算,因為系統已開機。 當系統進入深度睡眠時,此時鐘會停止(CPU 關閉、顯示深色、裝置等待外部輸入),但不受時鐘調整、閑置或其他省電機制影響。 這是大部分間隔時間的基礎,例如 Thread#sleep(long) Thread.sleep(millls)
、 Object#wait(long) Object.wait(millis)
和 System#nanoTime System.nanoTime()
。 此時鍾保證為單調,且適合在間隔不跨越裝置睡眠時使用間隔時間。 接受時間戳值的大部分方法目前都預期 #uptimeMillis
時鐘。
<李>
#elapsedRealtime
並 #elapsedRealtimeNanos
傳回系統開機后的時間,並包含深度睡眠。 此時鍾保證為單調,即使 CPU 處於省電模式,仍會繼續刻度,因此是一般用途間隔時間的建議基礎。
</ul>
有數種機制可用來控制事件的時機:
<ul><li>
和等Thread#sleep(long) Thread.sleep(millis)
Object#wait(long) Object.wait(millis)
標準函式一律可供使用。 這些函式會 #uptimeMillis
使用時鐘;如果裝置進入睡眠狀態,則剩餘的時間將會延後,直到裝置喚醒為止。 這些同步函式可能會與 Thread#interrupt Thread.interrupt()
中斷,而且您必須處理 InterruptedException
。
<李>
#sleep SystemClock.sleep(millis)
是非常類似於 Thread#sleep(long) Thread.sleep(millis)
的公用程式函式,但會 InterruptedException
忽略 。 如果您不使用 Thread#interrupt Thread.interrupt()
,請使用此函式來延遲,因為它會保留線程的中斷狀態。
<李>
類別 android.os.Handler
可以在絕對或相對時間排程異步回呼。 處理程式物件也會使用 #uptimeMillis
時鐘,而且需要 android.os.Looper event loop
(通常存在於任何 GUI 應用程式中)。
<李>
android.app.AlarmManager
可以觸發一次性或週期性事件,即使裝置處於深度睡眠狀態,或您的應用程式未執行也一次。 事件可能會隨著您選擇的 java.lang.System#currentTimeMillis
(RTC) 或 #elapsedRealtime
(ELAPSED_REALTIME) 排程,並在事件發生時產生 android.content.Intent
廣播。 </ul>
的 android.os.SystemClock
Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
屬性
Class |
傳回這個 |
Handle |
基礎Android實例的句柄。 (繼承來源 Object) |
JniIdentityHashCode |
核心守時設施。 (繼承來源 Object) |
JniPeerMembers |
核心守時設施。 |
PeerReference |
核心守時設施。 (繼承來源 Object) |
ThresholdClass |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 (繼承來源 Object) |
ThresholdType |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 (繼承來源 Object) |
方法
Clone() |
建立並傳回這個 對象的複本。 (繼承來源 Object) |
CurrentGnssTimeClock() |
傳 |
CurrentNetworkTimeClock() |
傳 |
CurrentThreadTimeMillis() |
傳回在目前線程中執行的毫秒。 |
Dispose() |
核心守時設施。 (繼承來源 Object) |
Dispose(Boolean) |
核心守時設施。 (繼承來源 Object) |
ElapsedRealtime() |
傳回開機後的毫秒數,包括睡眠時間。 |
ElapsedRealtimeNanos() |
從開機後傳回 nanoseconds,包括睡眠時間。 |
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() |
傳回開機后的毫秒數,不會計算在深度睡眠中花費的時間。 |
Wait() |
讓目前線程等候直到喚醒為止,通常是藉由em <notified/em>或<em>interrupted</em> 來喚醒它。<> (繼承來源 Object) |
Wait(Int64, Int32) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。 (繼承來源 Object) |
Wait(Int64) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</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) |
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
核心守時設施。 |
GetJniTypeName(IJavaPeerable) |
核心守時設施。 |