public final class Looper
extends Object
java.lang.Object | |
↳ | android.os.Looper |
用于为线程运行消息循环的类。 线程默认没有与它们相关的消息循环; 创建一个,在运行循环的线程中调用prepare()
,然后loop()
让它处理消息,直到循环停止。
与消息循环的大多数交互是通过 Handler
类。
这是实现Looper线程的典型示例,使用 prepare()
和 loop()
来创建初始Handler以与Looper进行通信。
class LooperThread extends Thread { public Handler mHandler; public void run() { Looper.prepare(); mHandler = new Handler() { public void handleMessage(Message msg) { // process incoming messages here } }; Looper.loop(); } }
Public methods |
|
---|---|
void |
dump(Printer pw, String prefix) 为调试目的转储活套的状态。 |
static Looper |
getMainLooper() 返回应用程序的主要活套,它位于应用程序的主线程中。 |
MessageQueue |
getQueue() 获取此活套的消息队列。 |
Thread |
getThread() 获取与此循环相关的线程。 |
boolean |
isCurrentThread() 如果当前线程是该活套线程,则返回true。 |
static void |
loop() 在此线程中运行消息队列。 |
static Looper |
myLooper() 返回与当前线程关联的Looper对象。 |
static MessageQueue |
myQueue() 返回与当前线程关联的 |
static void |
prepare() 将当前线程初始化为活套。 |
static void |
prepareMainLooper() 将当前线程初始化为活套,将其标记为应用程序的主要活套。 |
void |
quit() 退出活套。 |
void |
quitSafely() 安全地退出活套。 |
void |
setMessageLogging(Printer printer) 控制由此Looper处理的消息的日志记录。 |
String |
toString() 返回对象的字符串表示形式。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
void dump (Printer pw, String prefix)
为调试目的转储活套的状态。
Parameters | |
---|---|
pw |
Printer : A printer to receive the contents of the dump. |
prefix |
String : A prefix to prepend to each line which is printed. |
MessageQueue getQueue ()
获取此活套的消息队列。
Returns | |
---|---|
MessageQueue |
The looper's message queue. |
boolean isCurrentThread ()
如果当前线程是该活套线程,则返回true。
Returns | |
---|---|
boolean |
Looper myLooper ()
返回与当前线程关联的Looper对象。 如果调用线程未与Looper关联,则返回null。
Returns | |
---|---|
Looper |
MessageQueue myQueue ()
返回与当前线程关联的MessageQueue
对象。 这必须从运行Looper的线程调用,否则将引发NullPointerException。
Returns | |
---|---|
MessageQueue |
void prepare ()
将当前线程初始化为活套。 这让你有机会创建处理程序,然后在实际启动循环之前引用此循环。 调用此方法后请务必调用loop()
,并通过调用quit()
结束它。
void prepareMainLooper ()
将当前线程初始化为活套,将其标记为应用程序的主要活套。 您的应用程序的主要操作环境是由Android环境创建的,因此您绝不应该自己调用此函数。 另见: prepare()
void quit ()
退出活套。
导致 loop()
方法终止而不处理消息队列中的任何更多消息。
在循环者被要求退出后,任何尝试将消息发送到队列都将失败。 例如, sendMessage(Message)
方法将返回false。
使用这种方法可能是不安全的,因为一些消息可能不会在循环者终止之前传递。 考虑使用quitSafely()
来代替,以确保所有待处理的工作都以有序的方式完成。
也可以看看:
void quitSafely ()
安全地退出活套。
一旦消息队列中已经到期的所有剩余消息已经处理loop()
,就立即终止loop()
方法。 然而,在循环终止之前,在未来的延迟消息将不会被交付。
在循环者被要求退出后,任何尝试将消息发送到队列都将失败。 例如, sendMessage(Message)
方法将返回false。
void setMessageLogging (Printer printer)
控制由此Looper处理的消息的日志记录。 如果启用,则会在每个消息分派的开始和结束处将日志消息写入打印机 ,以标识目标处理程序和消息内容。
Parameters | |
---|---|
printer |
Printer : A Printer object that will receive log messages, or null to disable message logging. |
String toString ()
返回对象的字符串表示形式。 一般来说, toString
方法返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。
类Object
的toString
方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @
”和对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Returns | |
---|---|
String |
a string representation of the object. |