Added in API level 26

TestLooperManager


public class TestLooperManager
extends Object

java.lang.Object
   ↳ android.os.TestLooperManager


Blocks a looper from executing any messages, and allows the holder of this object to control when and which messages get executed until it is released.

A TestLooperManager should be acquired using Instrumentation.acquireLooperManager(Looper). Until release() is called, the Looper thread will not execute any messages except when execute(android.os.Message) is called. The test code may use next() to acquire messages that have been queued to this Looper/MessageQueue and then execute(Message) to run any that desires.

Summary

Public methods

void execute(Message message)

Executes the given message on the Looper thread this wrapper is attached to.

MessageQueue getMessageQueue()

Returns the MessageQueue this object is wrapping.

boolean hasMessages(Handler h, Object object, Runnable r)

Returns true if there are any queued messages that match the parameters.

boolean hasMessages(Handler h, Object object, int what)

Returns true if there are any queued messages that match the parameters.

Message next()

Returns the next message that should be executed by this queue, may block if no messages are ready.

void recycle(Message msg)

Called to indicate that a Message returned by next() has been parsed and should be recycled.

void release()

Releases the looper to continue standard looping and processing of messages, no further interactions with TestLooperManager will be allowed after release() has been called.

Inherited methods

Public methods

execute

Added in API level 26
public void execute (Message message)

Executes the given message on the Looper thread this wrapper is attached to.

Execution will happen on the Looper's thread (whether it is the current thread or not), but all RuntimeExceptions encountered while executing the message will be thrown on the calling thread.

Parameters
message Message

getMessageQueue

Added in API level 26
public MessageQueue getMessageQueue ()

Returns the MessageQueue this object is wrapping.

Returns
MessageQueue

hasMessages

Added in API level 26
public boolean hasMessages (Handler h, 
                Object object, 
                Runnable r)

Returns true if there are any queued messages that match the parameters.

Parameters
h Handler: the value of Message#getTarget()

object Object: the value of Message#obj, null for any

r Runnable: the value of Message#getCallback()

Returns
boolean

hasMessages

Added in API level 26
public boolean hasMessages (Handler h, 
                Object object, 
                int what)

Returns true if there are any queued messages that match the parameters.

Parameters
h Handler: the value of Message#getTarget()

object Object: the value of Message#obj, null for any

what int: the value of Message#what

Returns
boolean

next

Added in API level 26
public Message next ()

Returns the next message that should be executed by this queue, may block if no messages are ready.

Callers should always call recycle(android.os.Message) on the message when all interactions with it have completed.

Returns
Message

recycle

Added in API level 26
public void recycle (Message msg)

Called to indicate that a Message returned by next() has been parsed and should be recycled.

Parameters
msg Message

release

Added in API level 26
public void release ()

Releases the looper to continue standard looping and processing of messages, no further interactions with TestLooperManager will be allowed after release() has been called.