to top
Android APIs
public class

Looper

extends Object
java.lang.Object
   ↳ android.os.Looper

Class Overview

Class used to run a message loop for a thread. Threads by default do not have a message loop associated with them; to create one, call prepare() in the thread that is to run the loop, and then loop() to have it process messages until the loop is stopped.

Most interaction with a message loop is through the Handler class.

This is a typical example of the implementation of a Looper thread, using the separation of prepare() and loop() to create an initial Handler to communicate with the 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()
Returns the application's main looper, which lives in the main thread of the application.
Thread getThread()
Return the Thread associated with this Looper.
static void loop()
Run the message queue in this thread.
static Looper myLooper()
Return the Looper object associated with the current thread.
static MessageQueue myQueue()
Return the MessageQueue object associated with the current thread.
static void prepare()
Initialize the current thread as a looper.
static void prepareMainLooper()
Initialize the current thread as a looper, marking it as an application's main looper.
void quit()
Quits the looper.
void setMessageLogging(Printer printer)
Control logging of messages as they are processed by this Looper.
String toString()
Returns a string containing a concise, human-readable description of this object.
[Expand]
Inherited Methods
From class java.lang.Object

Public Methods

public void dump (Printer pw, String prefix)

Since: API Level 1

public static Looper getMainLooper ()

Since: API Level 1

Returns the application's main looper, which lives in the main thread of the application.

public Thread getThread ()

Since: API Level 3

Return the Thread associated with this Looper.

public static void loop ()

Since: API Level 1

Run the message queue in this thread. Be sure to call quit() to end the loop.

public static Looper myLooper ()

Since: API Level 1

Return the Looper object associated with the current thread. Returns null if the calling thread is not associated with a Looper.

public static MessageQueue myQueue ()

Since: API Level 1

Return the MessageQueue object associated with the current thread. This must be called from a thread running a Looper, or a NullPointerException will be thrown.

public static void prepare ()

Since: API Level 1

Initialize the current thread as a looper. This gives you a chance to create handlers that then reference this looper, before actually starting the loop. Be sure to call loop() after calling this method, and end it by calling quit().

public static void prepareMainLooper ()

Since: API Level 1

Initialize the current thread as a looper, marking it as an application's main looper. The main looper for your application is created by the Android environment, so you should never need to call this function yourself. See also: prepare()

public void quit ()

Since: API Level 1

Quits the looper. Causes the loop() method to terminate as soon as possible.

public void setMessageLogging (Printer printer)

Since: API Level 1

Control logging of messages as they are processed by this Looper. If enabled, a log message will be written to printer at the beginning and ending of each message dispatch, identifying the target Handler and message contents.

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

public String toString ()

Since: API Level 1

Returns a string containing a concise, human-readable description of this object. Subclasses are encouraged to override this method and provide an implementation that takes into account the object's type and data. The default implementation is equivalent to the following expression:

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

See Writing a useful toString method if you intend implementing your own toString method.

Returns
  • a printable representation of this object.