{% setvar book_path %}/reference/androidx/_book.yaml{% endsetvar %} {% include "_shared/_reference-head-tags.html" %}
interface UiController
IdlingUiController |
Similar to |
InterruptableUiController |
Similar to |
Provides base-level UI operations (such as injection of MotionEvents) that can be used to build user actions such as clicks, scrolls, swipes, etc. This replaces parts of the android Instrumentation class that provides similar functionality. However, it provides a more advanced synchronization mechanism for test actions. The key differentiators are:
Public methods |
|
|---|---|
abstract boolean |
injectKeyEvent(KeyEvent event)Injects a key event into the application. |
abstract boolean |
injectMotionEvent(MotionEvent event)Injects a motion event into the application. |
default boolean |
injectMotionEventSequence(Iterable<MotionEvent> events) |
abstract boolean |
injectString(String str)Types a string into the application using series of |
abstract void |
loopMainThreadForAtLeast(long millisDelay)Loops the main thread for a specified period of time. |
abstract void |
Loops the main thread until the application goes idle. |
abstract boolean injectKeyEvent(KeyEvent event)
Injects a key event into the application.
| Parameters | |
|---|---|
KeyEvent event |
the (non-null!) event to inject |
| Returns | |
|---|---|
boolean |
true if the event was injected, false otherwise |
| Throws | |
|---|---|
androidx.test.espresso.InjectEventSecurityException androidx.test.espresso.InjectEventSecurityException |
if the event couldn't be injected because it would interact with another application. |
abstract boolean injectMotionEvent(MotionEvent event)
Injects a motion event into the application.
| Parameters | |
|---|---|
MotionEvent event |
the (non-null!) event to inject |
| Returns | |
|---|---|
boolean |
true if the event was injected, false otherwise |
| Throws | |
|---|---|
androidx.test.espresso.InjectEventSecurityException androidx.test.espresso.InjectEventSecurityException |
if the event couldn't be injected because it would interact with another application. @Deprecated Please use injectMotionEventSequence this method will be removed in future. |
default boolean injectMotionEventSequence(Iterable<MotionEvent> events)
| Throws | |
|---|---|
androidx.test.espresso.InjectEventSecurityException androidx.test.espresso.InjectEventSecurityException |
|
abstract boolean injectString(String str)
Types a string into the application using series of KeyEvents. It is up to the implementor to decide how to map the string to KeyEvent objects. If you need specific control over the key events generated use injectKeyEvent.
| Parameters | |
|---|---|
String str |
the (non-null!) string to type |
| Returns | |
|---|---|
boolean |
true if the string was injected, false otherwise |
| Throws | |
|---|---|
androidx.test.espresso.InjectEventSecurityException androidx.test.espresso.InjectEventSecurityException |
if the events couldn't be injected because it would interact with another application. |
abstract void loopMainThreadForAtLeast(long millisDelay)
Loops the main thread for a specified period of time.
Control may not return immediately, instead it'll return after the provided delay has passed and the queue is in an idle state again.
| Parameters | |
|---|---|
long millisDelay |
time to spend in looping the main thread |
abstract void loopMainThreadUntilIdle()
Loops the main thread until the application goes idle.
An empty task is immediately inserted into the task queue to ensure that if we're idle at this moment we'll return instantly.