Most visited

Recently visited

Added in API level 1

Handler

public class Handler
extends Object

java.lang.Object
   ↳ android.os.Handler
Known Direct Subclasses


处理程序允许您发送和处理与线程MessageQueue相关联的Message和Runnable对象。 每个Handler实例都与单个线程和该线程的消息队列相关联。 当您创建一个新的处理程序时,它将绑定到正在创建它的线程的线程/消息队列 - 此后,它将消息和可运行消息传递到该消息队列,并在消息出来时执行它们队列。

处理程序有两个主要用途:(1)安排将来要执行的消息和可运行的程序; 和(2)排队在不同于你自己的线程上执行的动作。

调度消息与完成post(Runnable)postAtTime(Runnable, long)postDelayed(Runnable, long)sendEmptyMessage(int)sendMessage(Message)sendMessageAtTime(Message, long) ,并sendMessageDelayed(Message, long)方法。 发布版本允许您排队Runnable对象,以便在收到消息队列时被消息队列调用; sendMessage版本允许您排入包含将由Handler的handleMessage(Message)方法处理的数据包的Message对象(要求您实现Handler的子类)。

在发布或发送给处理程序时,您可以在消息队列准备就绪时立即处理该项目,或者在处理它之前指定延迟或指定延迟处理的绝对时间。 后两者允许您实现超时,滴答以及其他基于时间的行为。

为应用程序创建一个进程时,其主线程专门用于运行消息队列,该消息队列负责管理顶级应用程序对象(活动,广播接收器等)以及它们创建的任何窗口。 您可以创建自己的线程,并通过Handler与主应用程序线程进行通信。 这是通过像以前一样调用相同的postsendMessage方法来完成的,但是通过您的新线程来完成。 然后,给定的Runnable或Message将被安排在Handler的消息队列中,并在适当时进行处理。

Summary

Nested classes

interface Handler.Callback

在实例化Handler时可以使用的回调接口,以避免必须实现自己的Handler子类。

Public constructors

Handler()

默认构造函数将此处理程序与当前线程的 Looper关联。

Handler(Handler.Callback callback)

构造函数将此处理程序与当前线程的 Looper相关联,并采用可处理消息的回调接口。

Handler(Looper looper)

使用提供的 Looper而不是默认的。

Handler(Looper looper, Handler.Callback callback)

使用提供的 Looper而不是默认的接口,并在其中处理消息的回调接口。

Public methods

void dispatchMessage(Message msg)

在这里处理系统消息。

final void dump(Printer pw, String prefix)
final Looper getLooper()
String getMessageName(Message message)

返回表示指定消息名称的字符串。

void handleMessage(Message msg)

子类必须实现这个才能接收消息。

final boolean hasMessages(int what)

检查消息队列中是否有任何待处理消息的代码为“what”。

final boolean hasMessages(int what, Object object)

检查消息队列中是否有未处理的消息的代码为'what'且obj是'object'。

final Message obtainMessage(int what, Object obj)

obtainMessage()相同,只是它也设置返回消息的what和obj成员。

final Message obtainMessage()

从全局消息池中返回一个新的 Message

final Message obtainMessage(int what, int arg1, int arg2)

obtainMessage()相同,不同之处在于它还设置返回的消息的what,arg1和arg2成员。

final Message obtainMessage(int what, int arg1, int arg2, Object obj)

obtainMessage()相同,只是它还在返回的消息上设置了what,obj,arg1和arg2值。

final Message obtainMessage(int what)

obtainMessage()相同,只是它也设置返回消息的哪个成员。

final boolean post(Runnable r)

导致Runnable r被添加到消息队列中。

final boolean postAtFrontOfQueue(Runnable r)

将消息发布到实现Runnable的对象。

final boolean postAtTime(Runnable r, long uptimeMillis)

导致Runnable r被添加到消息队列中,以在由 uptimeMillis给定的特定时间运行。

final boolean postAtTime(Runnable r, Object token, long uptimeMillis)

导致Runnable r被添加到消息队列中,以在由 uptimeMillis给定的特定时间运行。

final boolean postDelayed(Runnable r, long delayMillis)

导致Runnable r被添加到消息队列中,在指定的时间过后运行。

final void removeCallbacks(Runnable r)

删除消息队列中的所有Runnable r待处理文章。

final void removeCallbacks(Runnable r, Object token)

删除消息队列中带有Object 标记的Runnable r的所有待处理文章。

final void removeCallbacksAndMessages(Object token)

删除所有未完成的回调帖子,并发送其 obj标记的消息。

final void removeMessages(int what)

使用消息队列中的代码“what”删除任何待处理的消息帖子。

final void removeMessages(int what, Object object)

删除消息队列中代码为'what'且obj为'object'的所有待处理消息。

final boolean sendEmptyMessage(int what)

发送仅包含什么值的消息。

final boolean sendEmptyMessageAtTime(int what, long uptimeMillis)

发送仅包含要在特定时间发送的值的消息。

final boolean sendEmptyMessageDelayed(int what, long delayMillis)

发送仅包含什么值的消息,在指定的时间量过去后发送。

final boolean sendMessage(Message msg)

在当前时间之前的所有待处理消息之后,将消息推送到消息队列的末尾。

final boolean sendMessageAtFrontOfQueue(Message msg)

将消息排入消息队列的前端,以便在消息循环的下一次迭代中进行处理。

boolean sendMessageAtTime(Message msg, long uptimeMillis)

在绝对时间(以毫秒为单位) uptimeMillis之前的所有待处理消息之后,将消息排入消息队列。

final boolean sendMessageDelayed(Message msg, long delayMillis)

在当前时间+ delayMillis之前的所有待处理消息之后,将消息排入消息队列。

String toString()

返回对象的字符串表示形式。

Inherited methods

From class java.lang.Object

Public constructors

Handler

Added in API level 1
Handler ()

默认构造函数将此处理程序与当前线程的Looper关联。 如果此线程没有活套,则此处理程序将无法接收消息,因此引发异常。

Handler

Added in API level 3
Handler (Handler.Callback callback)

构造函数将此处理程序与当前线程的Looper关联Looper ,并采用可处理消息的回调接口。 如果此线程没有活套,则此处理程序将无法接收消息,因此引发异常。

Parameters
callback Handler.Callback: The callback interface in which to handle messages, or null.

Handler

Added in API level 1
Handler (Looper looper)

使用提供的 Looper而不是默认的。

Parameters
looper Looper: The looper, must not be null.

Handler

Added in API level 3
Handler (Looper looper, 
                Handler.Callback callback)

使用提供的 Looper而不是默认的接口,并在其中处理消息的回调接口。

Parameters
looper Looper: The looper, must not be null.
callback Handler.Callback: The callback interface in which to handle messages, or null.

Public methods

dispatchMessage

Added in API level 1
void dispatchMessage (Message msg)

在这里处理系统消息。

Parameters
msg Message

dump

Added in API level 1
void dump (Printer pw, 
                String prefix)

Parameters
pw Printer
prefix String

getLooper

Added in API level 1
Looper getLooper ()

Returns
Looper

getMessageName

Added in API level 14
String getMessageName (Message message)

返回表示指定消息名称的字符串。 默认实现将返回消息回调的类名(如果有)或消息“what”字段的十六进制表示形式。

Parameters
message Message: The message whose name is being queried
Returns
String

handleMessage

Added in API level 1
void handleMessage (Message msg)

子类必须实现这个才能接收消息。

Parameters
msg Message

hasMessages

Added in API level 1
boolean hasMessages (int what)

检查消息队列中是否有任何待处理消息的代码为“what”。

Parameters
what int
Returns
boolean

hasMessages

Added in API level 1
boolean hasMessages (int what, 
                Object object)

检查消息队列中是否有未处理的消息的代码为'what'且obj是'object'。

Parameters
what int
object Object
Returns
boolean

obtainMessage

Added in API level 1
Message obtainMessage (int what, 
                Object obj)

obtainMessage()相同,只是它也设置返回消息的what和obj成员。

Parameters
what int: Value to assign to the returned Message.what field.
obj Object: Value to assign to the returned Message.obj field.
Returns
Message A Message from the global message pool.

obtainMessage

Added in API level 1
Message obtainMessage ()

从全局消息池中返回一个新的Message 比创建和分配新实例更高效。 检索到的消息将其处理程序设置为此实例(Message.target == this)。 如果你不想要那个设施,只需调用Message.obtain()。

Returns
Message

obtainMessage

Added in API level 1
Message obtainMessage (int what, 
                int arg1, 
                int arg2)

obtainMessage()相同,只是它也设置返回消息的what,arg1和arg2成员。

Parameters
what int: Value to assign to the returned Message.what field.
arg1 int: Value to assign to the returned Message.arg1 field.
arg2 int: Value to assign to the returned Message.arg2 field.
Returns
Message A Message from the global message pool.

obtainMessage

Added in API level 1
Message obtainMessage (int what, 
                int arg1, 
                int arg2, 
                Object obj)

obtainMessage()相同,只是它还在返回的消息上设置了what,obj,arg1和arg2值。

Parameters
what int: Value to assign to the returned Message.what field.
arg1 int: Value to assign to the returned Message.arg1 field.
arg2 int: Value to assign to the returned Message.arg2 field.
obj Object: Value to assign to the returned Message.obj field.
Returns
Message A Message from the global message pool.

obtainMessage

Added in API level 1
Message obtainMessage (int what)

obtainMessage()相同,只是它也设置返回消息的成员。

Parameters
what int: Value to assign to the returned Message.what field.
Returns
Message A Message from the global message pool.

post

Added in API level 1
boolean post (Runnable r)

导致Runnable r被添加到消息队列中。 runnable将在该处理程序所连接的线程上运行。

Parameters
r Runnable: The Runnable that will be executed.
Returns
boolean Returns true if the Runnable was successfully placed in to the message queue. Returns false on failure, usually because the looper processing the message queue is exiting.

postAtFrontOfQueue

Added in API level 1
boolean postAtFrontOfQueue (Runnable r)

将消息发布到实现Runnable的对象。 使Runnable r在通过消息队列的下一次迭代中执行。 runnable将在该处理程序所连接的线程上运行。 此方法仅适用于非常特殊的情况 - 它可能容易使消息队列挨饿,导致排序问题或出现其他意想不到的副作用。

Parameters
r Runnable: The Runnable that will be executed.
Returns
boolean Returns true if the message was successfully placed in to the message queue. Returns false on failure, usually because the looper processing the message queue is exiting.

postAtTime

Added in API level 1
boolean postAtTime (Runnable r, 
                long uptimeMillis)

导致Runnable r被添加到消息队列中,以在由uptimeMillis给定的特定时间运行。 时基为uptimeMillis() 在深度睡眠中度过的时间会增加执行的延迟时间。 runnable将在该处理程序所连接的线程上运行。

Parameters
r Runnable: The Runnable that will be executed.
uptimeMillis long: The absolute time at which the callback should run, using the uptimeMillis() time-base.
Returns
boolean Returns true if the Runnable was successfully placed in to the message queue. Returns false on failure, usually because the looper processing the message queue is exiting. Note that a result of true does not mean the Runnable will be processed -- if the looper is quit before the delivery time of the message occurs then the message will be dropped.

postAtTime

Added in API level 1
boolean postAtTime (Runnable r, 
                Object token, 
                long uptimeMillis)

导致Runnable r被添加到消息队列中,以在由uptimeMillis给定的特定时间运行。 时基为uptimeMillis() 在深度睡眠中度过的时间会增加执行的延迟时间。 runnable将在该处理程序所连接的线程上运行。

Parameters
r Runnable: The Runnable that will be executed.
token Object
uptimeMillis long: The absolute time at which the callback should run, using the uptimeMillis() time-base.
Returns
boolean Returns true if the Runnable was successfully placed in to the message queue. Returns false on failure, usually because the looper processing the message queue is exiting. Note that a result of true does not mean the Runnable will be processed -- if the looper is quit before the delivery time of the message occurs then the message will be dropped.

也可以看看:

postDelayed

Added in API level 1
boolean postDelayed (Runnable r, 
                long delayMillis)

导致Runnable r被添加到消息队列中,在指定的时间过后运行。 runnable将在该处理程序所连接的线程上运行。 时基为uptimeMillis() 在深度睡眠中度过的时间会增加执行的延迟时间。

Parameters
r Runnable: The Runnable that will be executed.
delayMillis long: The delay (in milliseconds) until the Runnable will be executed.
Returns
boolean Returns true if the Runnable was successfully placed in to the message queue. Returns false on failure, usually because the looper processing the message queue is exiting. Note that a result of true does not mean the Runnable will be processed -- if the looper is quit before the delivery time of the message occurs then the message will be dropped.

removeCallbacks

Added in API level 1
void removeCallbacks (Runnable r)

删除消息队列中的所有Runnable r待处理文章。

Parameters
r Runnable

removeCallbacks

Added in API level 1
void removeCallbacks (Runnable r, 
                Object token)

删除消息队列中带有Object 标记的Runnable r的所有待处理文章。 如果标记为空,则所有回调都将被删除。

Parameters
r Runnable
token Object

removeCallbacksAndMessages

Added in API level 1
void removeCallbacksAndMessages (Object token)

删除所有未完成的回调帖子,并发送其obj标记的消息。 如果令牌为空,则所有回调和消息都将被删除。

Parameters
token Object

removeMessages

Added in API level 1
void removeMessages (int what)

使用消息队列中的代码“what”删除任何待处理的消息帖子。

Parameters
what int

removeMessages

Added in API level 1
void removeMessages (int what, 
                Object object)

删除消息队列中代码为'what'且obj为'object'的所有待处理消息。 如果object为null,则所有消息都将被删除。

Parameters
what int
object Object

sendEmptyMessage

Added in API level 1
boolean sendEmptyMessage (int what)

发送仅包含什么值的消息。

Parameters
what int
Returns
boolean Returns true if the message was successfully placed in to the message queue. Returns false on failure, usually because the looper processing the message queue is exiting.

sendEmptyMessageAtTime

Added in API level 1
boolean sendEmptyMessageAtTime (int what, 
                long uptimeMillis)

发送仅包含要在特定时间发送的值的消息。

Parameters
what int
uptimeMillis long
Returns
boolean Returns true if the message was successfully placed in to the message queue. Returns false on failure, usually because the looper processing the message queue is exiting.

也可以看看:

sendEmptyMessageDelayed

Added in API level 1
boolean sendEmptyMessageDelayed (int what, 
                long delayMillis)

发送仅包含什么值的消息,在指定的时间量过去后发送。

Parameters
what int
delayMillis long
Returns
boolean Returns true if the message was successfully placed in to the message queue. Returns false on failure, usually because the looper processing the message queue is exiting.

也可以看看:

sendMessage

Added in API level 1
boolean sendMessage (Message msg)

在当前时间之前的所有待处理消息之后,将消息推送到消息队列的末尾。 它将在连接到此处理程序的线程中收到handleMessage(Message)

Parameters
msg Message
Returns
boolean Returns true if the message was successfully placed in to the message queue. Returns false on failure, usually because the looper processing the message queue is exiting.

sendMessageAtFrontOfQueue

Added in API level 1
boolean sendMessageAtFrontOfQueue (Message msg)

将消息排入消息队列的前端,以便在消息循环的下一次迭代中进行处理。 您将在连接到此处理程序的线程中收到handleMessage(Message) 此方法仅适用于非常特殊的情况 - 它可能容易使消息队列挨饿,导致排序问题或出现其他意想不到的副作用。

Parameters
msg Message
Returns
boolean Returns true if the message was successfully placed in to the message queue. Returns false on failure, usually because the looper processing the message queue is exiting.

sendMessageAtTime

Added in API level 1
boolean sendMessageAtTime (Message msg, 
                long uptimeMillis)

在绝对时间(以毫秒为单位) uptimeMillis之前的所有待处理消息之后,将消息排入消息队列。 时基为uptimeMillis() 在深度睡眠中度过的时间会增加执行的延迟时间。 您将在连接到此处理程序的线程中收到handleMessage(Message)

Parameters
msg Message
uptimeMillis long: The absolute time at which the message should be delivered, using the uptimeMillis() time-base.
Returns
boolean Returns true if the message was successfully placed in to the message queue. Returns false on failure, usually because the looper processing the message queue is exiting. Note that a result of true does not mean the message will be processed -- if the looper is quit before the delivery time of the message occurs then the message will be dropped.

sendMessageDelayed

Added in API level 1
boolean sendMessageDelayed (Message msg, 
                long delayMillis)

在当前时间+ delayMillis之前的所有待处理消息之后,将消息排入消息队列。 您将在连接到此处理程序的线程中收到handleMessage(Message)

Parameters
msg Message
delayMillis long
Returns
boolean Returns true if the message was successfully placed in to the message queue. Returns false on failure, usually because the looper processing the message queue is exiting. Note that a result of true does not mean the message will be processed -- if the looper is quit before the delivery time of the message occurs then the message will be dropped.

toString

Added in API level 1
String toString ()

返回对象的字符串表示形式。 通常, toString方法会返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。

ObjecttoString方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @ ”和对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:

 getClass().getName() + '@' + Integer.toHexString(hashCode())
 

Returns
String a string representation of the object.

Hooray!