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オブジェクトと実行可能オブジェクトを送信および処理できます。 各ハンドラー インスタンスは、1 つのスレッドとそのスレッドのメッセージ キューに関連付けられます。 新しいハンドラーを作成すると、 Looperにバインドされます。 その Looper のメッセージ キューにメッセージと実行可能ファイルを配信し、その Looper のスレッドで実行します。
ハンドラーには 2 つの主な用途があります。(1) メッセージと実行可能ファイルを将来のどこかの時点で実行するようにスケジュールします。(2) 自分のスレッドとは異なるスレッドで実行されるアクションをエンキューします。
メッセージのスケジュール設定は、 #post、 #postAtTime(Runnable, long)、 #postDelayed、 #sendEmptyMessage、 #sendMessage、 #sendMessageAtTime、および #sendMessageDelayed のメソッドを使用して実行されます。
<em>post</em> バージョンを使用すると、メッセージ キューから呼び出される Runnable オブジェクトを受信時にエンキューできます。 <em>sendMessage</em> バージョンでは、ハンドラーのMessage メソッドによって処理されるデータのバンドルを含む#handleMessage オブジェクトをエンキューできます (Handler のサブクラスを実装する必要があります)。
ハンドラーに投稿または送信する場合は、メッセージ キューの準備ができたらすぐにアイテムの処理を許可するか、処理されるまでの遅延または処理の絶対時間を指定できます。 後者の 2 つを使用すると、タイムアウト、ティック、およびその他のタイミングベースの動作を実装できます。
アプリケーションに対してプロセスが作成されると、そのメイン スレッドは、最上位レベルのアプリケーション オブジェクト (アクティビティ、ブロードキャスト レシーバーなど) とその作成するウィンドウの管理を処理するメッセージ キューの実行専用です。 独自のスレッドを作成し、ハンドラーを介してメイン アプリケーション スレッドと通信できます。 これは、以前と同じ <em>post</em> または <em>sendMessage</em> メソッドを呼び出すことによって行われますが、新しいスレッドから呼び出します。 その後、指定された実行可能またはメッセージがハンドラーのメッセージ キューにスケジュールされ、必要に応じて処理されます。
<h2>Handler</h2 を使用する場合のパフォーマンスに関する考慮事項>
Handlerの "has" メソッドと "remove" メソッドは、保留中のメッセージのキュー全体をスキャンするため、非常に遅くなる可能性があります。 基になる Looperの MessageQueue に保留中のメッセージが多数含まれている場合、これはコストがかかる可能性があります。
<ul><li>保留中の操作を取り消すメッセージまたはコールバックを削除する代わりに、キャンセルを示すフラグを設定し、続行する前に操作でフラグを確認することを検討してください。 <li>保留中の操作がまだ発生していないかどうかを確認するメッセージまたはコールバックがキューにあるかどうかを確認する代わりに、その操作が開始されたことを示すフラグを設定することを検討してください。 </ul>
標準のコンカレンシー プリミティブについては、 java.util.concurrent を参照してください。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
コンストラクター
| 名前 | 説明 |
|---|---|
| Handler() |
既定のコンストラクターは、このハンドラーを現在のスレッドの |
| Handler(Action<Message>) |
Handler クラスの新しいインスタンスを初期化します。 |
| Handler(Handler+ICallback) |
コンストラクターは、このハンドラーを現在のスレッドの Looper に関連付け、メッセージを処理できるコールバック インターフェイスを受け取ります。 |
| Handler(IntPtr, JniHandleOwnership) |
JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。 |
| Handler(Looper, Handler+ICallback) |
既定の Looper ではなく、指定されたを使用し、メッセージを処理するコールバック インターフェイスを使用します。 |
| Handler(Looper) |
既定の |
プロパティ
| 名前 | 説明 |
|---|---|
| Class |
この |
| Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
| JniIdentityHashCode |
相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。 (継承元 Object) |
| JniManagedPeerState |
ハンドラーを使用すると、スレッドの |
| JniPeerMembers |
この型の JNI ピア メンバー メタデータを提供します。 |
| Looper |
ルーパー値を取得します。 |
| PeerReference |
このJava ピアの JNI オブジェクト参照を取得します。 (継承元 Object) |
| ThresholdClass |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
| ThresholdType |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
メソッド
| 名前 | 説明 |
|---|---|
| Clone() |
このオブジェクトのコピーを作成して返します。 (継承元 Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
ハンドラーを使用すると、スレッドの |
| CreateAsync(Looper, Handler+ICallback) |
投稿されたメッセージと実行可能ファイルが、表示 vsync などの同期バリアの対象にならない新しいハンドラーを作成します。 |
| CreateAsync(Looper) |
投稿されたメッセージと実行可能ファイルが、表示 vsync などの同期バリアの対象にならない新しいハンドラーを作成します。 |
| DispatchMessage(Message) |
ここでシステム メッセージを処理します。 |
| Dispose() |
このJava ピアによって保持されているリソースを解放します。 (継承元 Object) |
| Dispose(Boolean) |
このJava ピアによって保持されているリソースを解放します。 (継承元 Object) |
| DisposeUnlessReferenced() |
ハンドラーを使用すると、スレッドの |
| Dump(IPrinter, String) |
このオブジェクトの状態を指定された出力に書き込みます。 |
| DumpAsync(IPrinter, String) |
対応する操作を非同期的に実行します。 |
| Equals(Object) |
ハンドラーを使用すると、スレッドの |
| Equals(Object) |
他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。 (継承元 Object) |
| GetHashCode() |
オブジェクトのハッシュ コード値を返します。 (継承元 Object) |
| GetMessageName(Message) |
指定したメッセージの名前を表す文字列を返します。 |
| HandleMessage(Message) |
サブクラスは、メッセージを受信するためにこれを実装する必要があります。 |
| HasCallbacks(IRunnable) |
メッセージ キューにコールバック r を含むメッセージの保留中の投稿があるかどうかを確認します。 |
| HasMessages(Int32, Object) |
メッセージ キューにコード 'what' と obj が 'object' であるメッセージの保留中の投稿があるかどうかを確認します。 |
| HasMessages(Int32) |
メッセージ キューにコード 'what' を含むメッセージの保留中の投稿があるかどうかを確認します。 |
| JavaFinalize() |
オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。 (継承元 Object) |
| Notify() |
このオブジェクトのモニターで待機している 1 つのスレッドを起動します。 (継承元 Object) |
| NotifyAll() |
このオブジェクトのモニターで待機しているすべてのスレッドを起動します。 (継承元 Object) |
| ObtainMessage() |
グローバル メッセージ プールから新しい |
| ObtainMessage(Int32, Int32, Int32, Object) |
|
| ObtainMessage(Int32, Int32, Int32) |
|
| ObtainMessage(Int32, Object) |
|
| ObtainMessage(Int32) |
|
| 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) |
指定した時間が経過した後に実行可能な r をメッセージ キューに追加します。 |
| PostDelayed(IRunnable, Object, Int64) |
指定した時間が経過した後に実行可能な r をメッセージ キューに追加します。 |
| RemoveCallbacks(Action, Object) |
指定した実行可能ファイルの保留中のコールバックを削除します。 |
| RemoveCallbacks(Action) |
指定した実行可能ファイルの保留中のコールバックを削除します。 |
| RemoveCallbacks(IRunnable, Object) |
メッセージ キュー内の Object <var>token</var> を使用して、Runnable <var>r</var> の保留中の投稿をすべて削除します。 |
| RemoveCallbacks(IRunnable) |
メッセージ キュー内にある Runnable r の保留中の投稿をすべて削除します。 |
| RemoveCallbacksAndMessages(Object) |
コールバックの保留中の投稿をすべて削除し、 <var>obj</var> が <var>token</var>である送信メッセージを削除します。 |
| RemoveMessages(Int32, Object) |
コード 'what' を持ち、その obj がメッセージ キュー内の 'object' であるメッセージの保留中の投稿をすべて削除します。 |
| RemoveMessages(Int32) |
メッセージ キューに含まれるコード 'what' を含むメッセージの保留中の投稿をすべて削除します。 |
| 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) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
ハンドラーを使用すると、スレッドの |
| ToArray<T>() |
このJava配列ラッパーからマネージド配列を作成します。 (継承元 Object) |
| ToString() |
オブジェクトの文字列形式を返します。 (継承元 Object) |
| UnregisterFromRuntime() |
相互運用ランタイムからこのJava ピアの登録を解除します。 (継承元 Object) |
| 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() |
ハンドラーを使用すると、スレッドの |
| IJavaPeerable.Finalized() |
ハンドラーを使用すると、スレッドの |
| IJavaPeerable.JniObjectReferenceControlBlock |
ハンドラーを使用すると、スレッドの |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
ハンドラーを使用すると、スレッドの |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
ハンドラーを使用すると、スレッドの |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
ハンドラーを使用すると、スレッドの |
拡張メソッド
| 名前 | 説明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
インスタンス |
| JavaAs<TResult>(IJavaPeerable) |
|
| JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
| JavaCast<TResult>(IJavaObject) |
ハンドラーを使用すると、スレッドの |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
|