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。 每個處理程序實例都與單一執行緒及其訊息佇列相關聯。 當你建立新的 Handler 時,它會綁定到 Looper。 它會將訊息和可執行程式傳送到該 Looper 的訊息佇列,並在該 Looper 的執行緒中執行。
處理器有兩個主要用途:(1) 排程未來某個時間點執行的訊息與可執行物件;以及 (2) 將執行任務排隊到與你執行的執行緒不同。
排程訊息透過 #post、 #postAtTime(Runnable, long)、 #sendMessage#sendMessageAtTime#postDelayed#sendEmptyMessage和 #sendMessageDelayed 方法來完成。 em post/em> 版本允許你為可執行的物件排隊,當訊息佇列收到時呼叫它們;<em>sendMessage</em> 版本允許你為包含一包資料的物件排隊Message,該資料將由 Handler #handleMessage 的方法處理(需要實作 Handler 的子類別)。<><
在發送或發送給處理器時,你可以選擇在訊息佇列準備好時就讓項目被處理,或指定處理前的延遲或絕對處理時間。 後兩者允許你實作逾時、tick 及其他基於時間的行為。
當你的應用程式建立一個程序時,其主執行緒會專門執行訊息佇列,負責管理頂層應用程式物件(活動、廣播接收器等)及其所建立的任何視窗。 你可以建立自己的執行緒,並透過處理器與主應用程式執行緒溝通。 這是透過呼叫與之前相同的 <em>post</em> 或 <em>sendMessage</em> 方法來完成,但來自你的新串。 該可執行或訊息會被排程進入處理器的訊息佇列,並在適當時處理。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| Handler() |
預設建構子會將此處理器與當前執行緒的 關聯 |
| Handler(Action<Message>) |
處理器允許你傳送並處理 |
| Handler(Handler+ICallback) |
建構子會將此處理器與 Looper 當前執行緒的 關聯,並採用回調介面,在那裡你可以處理訊息。 |
| Handler(IntPtr, JniHandleOwnership) |
用於建立 JNI 物件受管理表示的建構器;由執行時呼叫。 |
| Handler(Looper, Handler+ICallback) |
使用提供的 Looper 介面代替預設,並採用回調介面來處理訊息。 |
| Handler(Looper) |
請使用提供的 |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| JniIdentityHashCode |
處理器允許你傳送並處理 |
| JniPeerMembers |
處理器允許你傳送並處理 |
| Looper | |
| PeerReference |
處理器允許你傳送並處理 |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
方法
| 名稱 | Description |
|---|---|
| Clone() |
建立並回傳此物件的副本。 (繼承來源 Object) |
| CreateAsync(Looper, Handler+ICallback) |
建立一個新的處理器,其發布的訊息與可執行程式不受同步障礙(如顯示垂直同步)影響。 |
| CreateAsync(Looper) |
建立一個新的處理器,其發布的訊息與可執行程式不受同步障礙(如顯示垂直同步)影響。 |
| 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, Object) |
檢查訊息佇列中是否有代碼為「what」且目標為「object」的待處理訊息貼文。 |
| HasMessages(Int32) |
檢查訊息佇列中是否有包含代碼「what」的待發訊息貼文。 |
| JavaFinalize() |
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| ObtainMessage() |
從全域訊息池回傳新訊息 |
| ObtainMessage(Int32, Int32, Int32, Object) |
與 |
| ObtainMessage(Int32, Int32, Int32) |
與 |
| ObtainMessage(Int32, Object) |
與 |
| ObtainMessage(Int32) |
與 |
| Post(Action) |
處理器允許你傳送並處理 |
| Post(IRunnable) |
會讓可執行的 r 被加入訊息佇列。 |
| PostAtFrontOfQueue(Action) |
處理器允許你傳送並處理 |
| PostAtFrontOfQueue(IRunnable) |
向實作 Runnable 的物件發布訊息。 |
| PostAtTime(Action, Int64) |
處理器允許你傳送並處理 |
| PostAtTime(Action, Object, Int64) |
處理器允許你傳送並處理 |
| PostAtTime(IRunnable, Int64) |
會將可跑的 r 加入訊息佇列,並於 var<uptimeMillis>/var< 指定>的特定時間執行。 |
| PostAtTime(IRunnable, Object, Int64) |
會將可跑的 r 加入訊息佇列,並於 var<uptimeMillis>/var< 指定>的特定時間執行。 |
| PostDelayed(Action, Int64) |
處理器允許你傳送並處理 |
| PostDelayed(IRunnable, Int64) |
會將可執行的 r 加入訊息佇列,並在指定時間後執行。 |
| PostDelayed(IRunnable, Object, Int64) |
會將可執行的 r 加入訊息佇列,並在指定時間後執行。 |
| RemoveCallbacks(Action, Object) |
處理器允許你傳送並處理 |
| RemoveCallbacks(Action) |
處理器允許你傳送並處理 |
| RemoveCallbacks(IRunnable, Object) |
移除訊息隊列中任何 Runnable <var><> 與 Object <var>token</var> 的待發貼文。 |
| RemoveCallbacks(IRunnable) |
移除留言佇列中 Runnable r 待處理的貼文。 |
| RemoveCallbacksAndMessages(Object) |
移除所有待處理的回撥貼文,以及發送 var obj</var> 為 <var>token</var> 的訊息<。> |
| RemoveMessages(Int32, Object) |
移除訊息佇列中包含代碼為「what」且目標為「object」的待發訊息。 |
| RemoveMessages(Int32) |
移除訊息佇列中帶有代碼「what」的待發訊息貼文。 |
| SendEmptyMessage(Int32) |
發送僅包含 what 值的訊息。 |
| SendEmptyMessageAtTime(Int32, Int64) |
發送只包含「什麼」值的訊息,並指定於特定時間送達。 |
| SendEmptyMessageDelayed(Int32, Int64) |
發送僅包含「what」值的訊息,並在指定時間後交付。 |
| SendMessage(Message) |
在所有待處理訊息之後,將訊息推送到訊息隊列的末端。 |
| SendMessageAtFrontOfQueue(Message) |
將訊息排隊列在訊息佇列的最前端,待在訊息迴圈的下一次迭代中處理。 |
| SendMessageAtTime(Message, Int64) |
在所有待處理訊息後,將訊息排隊到訊息隊列,且在絕對時間(以毫秒為單位)<>之前,var uptimeMillis</var>。 |
| SendMessageDelayed(Message, Int64) |
在所有待處理訊息之後(當前時間 + 延遲毫厘)之後,將訊息排入訊息佇列。 |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| ToArray<T>() |
處理器允許你傳送並處理 |
| ToString() |
回傳物件的字串表示。 (繼承來源 Object) |
| UnregisterFromRuntime() |
處理器允許你傳送並處理 |
| Wait() |
導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。 (繼承來源 Object) |
| Wait(Int64, Int32) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wait(Int64) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
處理器允許你傳送並處理 |
| IJavaPeerable.DisposeUnlessReferenced() |
處理器允許你傳送並處理 |
| IJavaPeerable.Finalized() |
處理器允許你傳送並處理 |
| IJavaPeerable.JniManagedPeerState |
處理器允許你傳送並處理 |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
處理器允許你傳送並處理 |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
處理器允許你傳送並處理 |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
處理器允許你傳送並處理 |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
處理器允許你傳送並處理 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |