17

ハンドラーでのremoveCallbacks(Runnable r)の正確な意味を知りたいです。ドキュメントを確認したところ、「メッセージキューにあるRunnablerの保留中の投稿をすべて削除してください」と表示されています。

今、私の質問は、私のメッセージがハンドラーによってすでに処理を開始されているかどうか、そしてその間に呼び出すとremoveCallbacks、半分完了したメッセージの処理を停止するかどうかです。またはremoveCallbacks、ハンドラーによる処理をすでに開始しているメッセージを呼び出しても(呼び出したときにpost(Runnable r))実行されますか?

4

2 に答える 2

17

新しい を作成するとHandler、それを作成しているスレッドのスレッド/メッセージ キューにバインドされます。その時点から、メッセージとランナブルをそのメッセージ キューに配信し、メッセージ キューから出てきたときにそれらを実行します。removeCallbacksまだ処理を開始していないランナブルをキューから削除するだけです。

于 2012-07-10T13:34:11.617 に答える
10

Runnables は、メッセージ キューから出てきたときにのみ実行する必要があるため、メッセージの処理が既に開始されている場合は、 を呼び出しても影響を受けませんremoveCallbacks。すでに削除されているはずなので、処理を続行します。

于 2012-07-10T13:26:41.603 に答える