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与主应用程序线程进行通信。 这是通过像以前一样调用相同的post或sendMessage方法来完成的,但是通过您的新线程来完成。 然后,给定的Runnable或Message将被安排在Handler的消息队列中,并在适当时进行处理。
Nested classes |
|
---|---|
interface |
Handler.Callback 在实例化Handler时可以使用的回调接口,以避免必须实现自己的Handler子类。 |
Public constructors |
|
---|---|
Handler() 默认构造函数将此处理程序与当前线程的 |
|
Handler(Handler.Callback callback) 构造函数将此处理程序与当前线程的 |
|
Handler(Looper looper) 使用提供的 |
|
Handler(Looper looper, Handler.Callback callback) 使用提供的 |
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) 与 |
final Message |
obtainMessage() 从全局消息池中返回一个新的 |
final Message |
obtainMessage(int what, int arg1, int arg2) 与 |
final Message |
obtainMessage(int what, int arg1, int arg2, Object obj) 与 |
final Message |
obtainMessage(int what) 与 |
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
|
Handler (Handler.Callback callback)
构造函数将此处理程序与当前线程的Looper
关联Looper
,并采用可处理消息的回调接口。 如果此线程没有活套,则此处理程序将无法接收消息,因此引发异常。
Parameters | |
---|---|
callback |
Handler.Callback : The callback interface in which to handle messages, or null. |
Handler (Looper looper)
使用提供的 Looper
而不是默认的。
Parameters | |
---|---|
looper |
Looper : The looper, must not be null. |
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. |
void dispatchMessage (Message msg)
在这里处理系统消息。
Parameters | |
---|---|
msg |
Message
|
String getMessageName (Message message)
返回表示指定消息名称的字符串。 默认实现将返回消息回调的类名(如果有)或消息“what”字段的十六进制表示形式。
Parameters | |
---|---|
message |
Message : The message whose name is being queried |
Returns | |
---|---|
String |
void handleMessage (Message msg)
子类必须实现这个才能接收消息。
Parameters | |
---|---|
msg |
Message
|
boolean hasMessages (int what)
检查消息队列中是否有任何待处理消息的代码为“what”。
Parameters | |
---|---|
what |
int
|
Returns | |
---|---|
boolean |
boolean hasMessages (int what, Object object)
检查消息队列中是否有未处理的消息的代码为'what'且obj是'object'。
Parameters | |
---|---|
what |
int
|
object |
Object
|
Returns | |
---|---|
boolean |
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. |
Message obtainMessage ()
从全局消息池中返回一个新的Message
。 比创建和分配新实例更高效。 检索到的消息将其处理程序设置为此实例(Message.target == this)。 如果你不想要那个设施,只需调用Message.obtain()。
Returns | |
---|---|
Message |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
也可以看看:
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. |
void removeCallbacks (Runnable r)
删除消息队列中的所有Runnable r待处理文章。
Parameters | |
---|---|
r |
Runnable
|
void removeCallbacks (Runnable r, Object token)
删除消息队列中带有Object 标记的Runnable r的所有待处理文章。 如果标记为空,则所有回调都将被删除。
Parameters | |
---|---|
r |
Runnable
|
token |
Object
|
void removeCallbacksAndMessages (Object token)
删除所有未完成的回调帖子,并发送其obj为标记的消息。 如果令牌为空,则所有回调和消息都将被删除。
Parameters | |
---|---|
token |
Object
|
void removeMessages (int what)
使用消息队列中的代码“what”删除任何待处理的消息帖子。
Parameters | |
---|---|
what |
int
|
void removeMessages (int what, Object object)
删除消息队列中代码为'what'且obj为'object'的所有待处理消息。 如果object为null,则所有消息都将被删除。
Parameters | |
---|---|
what |
int
|
object |
Object
|
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. |
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. |
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. |
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. |
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. |
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. |
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. |
String toString ()
返回对象的字符串表示形式。 通常, toString
方法会返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。
类Object
的toString
方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @
”和对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Returns | |
---|---|
String |
a string representation of the object. |