Handler 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
處理常式可讓您傳送和處理 Message
與執行緒 相關聯的 MessageQueue
可執行物件。
[Android.Runtime.Register("android/os/Handler", DoNotGenerateAcw=true)]
public class Handler : Java.Lang.Object
[<Android.Runtime.Register("android/os/Handler", DoNotGenerateAcw=true)>]
type Handler = class
inherit Object
- 繼承
- 衍生
- 屬性
備註
處理常式可讓您傳送和處理 Message
與執行緒 相關聯的 MessageQueue
可執行物件。 每個處理常式實例都會與單一線程和該執行緒的訊息佇列相關聯。 當您建立新的處理常式時,它會系結至 Looper
。 它會將訊息和可執行專案傳遞給該 Looper 的訊息佇列,並在該 Looper 的執行緒上執行這些訊息。
處理常式有兩個主要用途: (1) 來排程未來某個時間點執行的訊息和可執行專案;和 (2) 將動作排入佇列,以在您自己的執行緒上執行。
排程訊息是使用 #post
、 #postAtTime(Runnable, long)
、 #postDelayed
、 #sendEmptyMessage
、 #sendMessage
、 #sendMessageAtTime
和 #sendMessageDelayed
方法來完成。 em post/em > 版本可讓您在收到 < Runnable 物件時排入佇列,而 em > sendMessage < /em > 版本可讓您將 Message
包含處理常式 #handleMessage
方法所處理之資料組合的物件排入佇列, (要求您實作 Handler) 的子類別。 <><
張貼或傳送至處理常式時,您可以允許在訊息佇列準備好執行此動作時立即處理專案,或指定處理之前或絕對時間的延遲。 後者兩個可讓您實作逾時、刻度和其他以時間為基礎的行為。
為您的應用程式建立進程時,其主執行緒專用於執行訊息佇列,負責管理最上層應用程式物件 (活動、廣播接收者等) 及其建立的任何視窗。 您可以建立自己的執行緒,並透過處理常式與主要應用程式執行緒通訊。 這是藉由呼叫與之前相同的 < em > post < /em > 或 < em > sendMessage < /em > 方法來完成,但會從新的執行緒呼叫。 接著,指定的 Runnable 或 Message 會排程在處理常式的訊息佇列中,並在適當時進行處理。
此頁面的部分是根據 原始碼專案所建立和共用的工作進行修改,並根據中所述的詞彙使用。
建構函式
Handler() |
預設建構函式會將這個處理常式與 |
Handler(Action<Message>) |
處理常式可讓您傳送和處理 |
Handler(Handler+ICallback) |
建構函式會將這個處理常式與 Looper 目前線程的 建立關聯,並接受回呼介面,您可以在其中處理訊息。 |
Handler(IntPtr, JniHandleOwnership) |
建立 JNI 物件的 Managed 標記法時所使用的建構函式;由執行時間呼叫。 |
Handler(Looper) |
使用提供的 |
Handler(Looper, Handler+ICallback) |
使用提供的 Looper ,而不是預設介面,並採用回呼介面來處理訊息。 |
屬性
Class |
傳回這個 |
Handle |
基礎 Android 實例的控制碼。 (繼承來源 Object) |
JniIdentityHashCode |
處理常式可讓您傳送和處理 |
JniPeerMembers |
處理常式可讓您傳送和處理 |
Looper | |
PeerReference |
處理常式可讓您傳送和處理 |
ThresholdClass |
此 API 支援 Mono for Android 基礎結構,並不適合直接從您的程式碼使用。 |
ThresholdType |
此 API 支援 Mono for Android 基礎結構,並不適合直接從您的程式碼使用。 |
方法
Clone() |
建立並傳回這個 物件的複本。 (繼承來源 Object) |
CreateAsync(Looper) |
建立新的處理常式,其張貼的訊息和可執行專案不受同步處理屏障,例如顯示 vsync。 |
CreateAsync(Looper, Handler+ICallback) |
建立新的處理常式,其張貼的訊息和可執行專案不受同步處理屏障,例如顯示 vsync。 |
DispatchMessage(Message) |
在這裡處理系統訊息。 |
Dispose() |
處理常式可讓您傳送和處理 |
Dispose(Boolean) |
處理常式可讓您傳送和處理 |
Dump(IPrinter, String) | |
DumpAsync(IPrinter, String) |
處理常式可讓您傳送和處理 |
Equals(Object) |
指出其他物件是否「等於」這個物件。 (繼承來源 Object) |
GetHashCode() |
傳回此物件的雜湊碼值。 (繼承來源 Object) |
GetMessageName(Message) |
傳回字串,表示指定訊息的名稱。 |
HandleMessage(Message) |
子類別必須實作這個 來接收訊息。 |
HasCallbacks(IRunnable) |
檢查訊息佇列中是否有任何具有回呼 r 的暫止訊息貼文。 |
HasMessages(Int32) |
檢查訊息佇列中是否有任何暫止的訊息貼文,其程式碼為 'what'。 |
HasMessages(Int32, Object) |
檢查是否有任何暫止的訊息貼文,其程式碼為 'what' 且其 obj 為訊息佇列中的 'object'。 |
JavaFinalize() |
當垃圾收集判斷物件沒有其他參考時,由物件上的垃圾收集行程呼叫。 (繼承來源 Object) |
Notify() |
喚醒正在等候此物件的監視器的單一線程。 (繼承來源 Object) |
NotifyAll() |
喚醒正在等候此物件監視器的所有線程。 (繼承來源 Object) |
ObtainMessage() |
從全域消息集區傳回新的 |
ObtainMessage(Int32) |
|
ObtainMessage(Int32, Int32, Int32) |
|
ObtainMessage(Int32, Int32, Int32, Object) |
|
ObtainMessage(Int32, Object) |
|
Post(Action) |
處理常式可讓您傳送和處理 |
Post(IRunnable) |
導致 Runnable r 新增至訊息佇列。 |
PostAtFrontOfQueue(Action) |
處理常式可讓您傳送和處理 |
PostAtFrontOfQueue(IRunnable) |
將訊息張貼至實作 Runnable 的物件。 |
PostAtTime(Action, Int64) |
處理常式可讓您傳送和處理 |
PostAtTime(Action, Object, Int64) |
處理常式可讓您傳送和處理 |
PostAtTime(IRunnable, Int64) |
導致 Runnable r 新增至訊息佇列,在特定時間由 < var > uptimeMillis < /var > 指定執行。 |
PostAtTime(IRunnable, Object, Int64) |
導致 Runnable r 新增至訊息佇列,在特定時間由 < var > uptimeMillis < /var > 指定執行。 |
PostDelayed(Action, Int64) |
處理常式可讓您傳送和處理 |
PostDelayed(IRunnable, Int64) |
使 Runnable r 新增至訊息佇列,在指定的時間長度過後執行。 |
PostDelayed(IRunnable, Object, Int64) |
使 Runnable r 新增至訊息佇列,在指定的時間長度過後執行。 |
RemoveCallbacks(Action) |
處理常式可讓您傳送和處理 |
RemoveCallbacks(Action, Object) |
處理常式可讓您傳送和處理 |
RemoveCallbacks(IRunnable) |
移除訊息佇列中 Runnable r 的任何擱置文章。 |
RemoveCallbacks(IRunnable, Object) |
使用訊息佇列中的物件 var token < /var 移除 Runnable < var >> r < /var >> 的任何擱置文章。 < |
RemoveCallbacksAndMessages(Object) |
移除回呼的任何擱置文章,並傳送 var obj < /var > 為 < var token < /var >> 的訊息 < 。 > |
RemoveMessages(Int32) |
使用訊息佇列中的程式碼 'what' 移除任何暫止的訊息貼文。 |
RemoveMessages(Int32, Object) |
移除含有程式碼 'what' 且其 obj 為訊息佇列中 'object' 的任何暫止訊息貼文。 |
SendEmptyMessage(Int32) |
傳送只包含值之訊息。 |
SendEmptyMessageAtTime(Int32, Int64) |
傳送只包含要在特定時間傳遞之值的訊息。 |
SendEmptyMessageDelayed(Int32, Int64) |
傳送只包含所指定時間量之後要傳遞之值的訊息。 |
SendMessage(Message) |
在目前時間之前,將所有擱置的訊息推送至訊息佇列結尾。 |
SendMessageAtFrontOfQueue(Message) |
將訊息加入訊息佇列前端的佇列,以在訊息迴圈的下一個反復專案上處理。 |
SendMessageAtTime(Message, Int64) |
在絕對時間之前,將訊息加入訊息佇列中,以毫秒 < 為單位 (,) var > uptimeMillis < /var > 。 |
SendMessageDelayed(Message, Int64) |
在目前時間 + delayMillis) (之前,將所有擱置的訊息加入訊息佇列中。 |
SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
ToArray<T>() |
處理常式可讓您傳送和處理 |
ToString() |
傳回物件的字串表示。 (繼承來源 Object) |
UnregisterFromRuntime() |
處理常式可讓您傳送和處理 |
Wait() |
讓目前的執行緒等到喚醒為止,通常是藉由 < em > notified < /em > 或 < em > interrupted < /em > 來喚醒。 (繼承來源 Object) |
Wait(Int64) |
讓目前的執行緒等到喚醒為止,通常是 < 透過 em > notified < /em 或 em > interrupted < /em >> ,或 < 直到經過一定數量的即時為止。 (繼承來源 Object) |
Wait(Int64, Int32) |
讓目前的執行緒等到喚醒為止,通常是 < 透過 em > notified < /em 或 em > interrupted < /em >> ,或 < 直到經過一定數量的即時為止。 (繼承來源 Object) |
明確介面實作
IJavaPeerable.Disposed() |
處理常式可讓您傳送和處理 |
IJavaPeerable.DisposeUnlessReferenced() |
處理常式可讓您傳送和處理 |
IJavaPeerable.Finalized() |
處理常式可讓您傳送和處理 |
IJavaPeerable.JniManagedPeerState |
處理常式可讓您傳送和處理 |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
處理常式可讓您傳送和處理 |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
處理常式可讓您傳送和處理 |
IJavaPeerable.SetPeerReference(JniObjectReference) |
處理常式可讓您傳送和處理 |
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
處理常式可讓您傳送和處理 |
GetJniTypeName(IJavaPeerable) |
處理常式可讓您傳送和處理 |