Most visited

Recently visited

Added in API level 1

Looper

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();
      }
  }

Summary

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()

返回与当前线程关联的 MessageQueue对象。

static void prepare()

将当前线程初始化为活套。

static void prepareMainLooper()

将当前线程初始化为活套,将其标记为应用程序的主要活套。

void quit()

退出活套。

void quitSafely()

安全地退出活套。

void setMessageLogging(Printer printer)

控制由此Looper处理的消息的日志记录。

String toString()

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

Inherited methods

From class java.lang.Object

Public methods

dump

Added in API level 1
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.

getMainLooper

Added in API level 1
Looper getMainLooper ()

返回应用程序的主要活套,它位于应用程序的主线程中。

Returns
Looper

getQueue

Added in API level 23
MessageQueue getQueue ()

获取此活套的消息队列。

Returns
MessageQueue The looper's message queue.

getThread

Added in API level 3
Thread getThread ()

获取与此循环相关的线程。

Returns
Thread The looper's thread.

isCurrentThread

Added in API level 23
boolean isCurrentThread ()

如果当前线程是该活套线程,则返回true。

Returns
boolean

loop

Added in API level 1
void loop ()

在此线程中运行消息队列。 一定要致电quit()来结束循环。

myLooper

Added in API level 1
Looper myLooper ()

返回与当前线程关联的Looper对象。 如果调用线程未与Looper关联,则返回null。

Returns
Looper

myQueue

Added in API level 1
MessageQueue myQueue ()

返回与当前线程关联的MessageQueue对象。 这必须从运行Looper的线程调用,否则将引发NullPointerException。

Returns
MessageQueue

prepare

Added in API level 1
void prepare ()

将当前线程初始化为活套。 这让你有机会创建处理程序,然后在实际启动循环之前引用此循环。 调用此方法后请务必调用loop() ,并通过调用quit()结束它。

prepareMainLooper

Added in API level 1
void prepareMainLooper ()

将当前线程初始化为活套,将其标记为应用程序的主要活套。 您的应用程序的主要操作环境是由Android环境创建的,因此您绝不应该自己调用此函数。 另见: prepare()

quit

Added in API level 1
void quit ()

退出活套。

导致 loop()方法终止而不处理消息队列中的任何更多消息。

在循环者被要求退出后,任何尝试将消息发送到队列都将失败。 例如, sendMessage(Message)方法将返回false。

使用这种方法可能是不安全的,因为一些消息可能不会在循环者终止之前传递。 考虑使用quitSafely()来代替,以确保所有待处理的工作都以有序的方式完成。

也可以看看:

quitSafely

Added in API level 18
void quitSafely ()

安全地退出活套。

一旦消息队列中已经到期的所有剩余消息已经处理loop() ,就立即终止loop()方法。 然而,在循环终止之前,在未来的延迟消息将不会被交付。

在循环者被要求退出后,任何尝试将消息发送到队列都将失败。 例如, sendMessage(Message)方法将返回false。

setMessageLogging

Added in API level 1
void setMessageLogging (Printer printer)

控制由此Looper处理的消息的日志记录。 如果启用,则会在每个消息分派的开始和结束处将日志消息写入打印机 ,以标识目标处理程序和消息内容。

Parameters
printer Printer: A Printer object that will receive log messages, or null to disable message logging.

toString

Added in API level 1
String toString ()

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

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

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

Returns
String a string representation of the object.

Hooray!