Class PausedExecutorService

java.lang.Object
java.util.concurrent.AbstractExecutorService
org.robolectric.android.util.concurrent.PausedExecutorService
All Implemented Interfaces:
Executor, ExecutorService

@Beta public class PausedExecutorService extends AbstractExecutorService
Executor service that queues any posted tasks.

Users must explicitly call runAll() to execute all pending tasks.

Intended to be a replacement for RoboExecutorService when using LooperMode.Mode.PAUSED. Unlike RoboExecutorService, will execute tasks on a background thread. This is useful to test Android code that enforces it runs off the main thread.

NOTE: Beta API, subject to change.

  • Constructor Details

    • PausedExecutorService

      public PausedExecutorService()
  • Method Details

    • runAll

      public int runAll()
      Execute all posted tasks and block until they are complete.
      Returns:
      the number of tasks executed
    • runNext

      public boolean runNext()
      Executes the next queued task.

      Will be ignored if called from the executor service thread to prevent deadlocks.

      Returns:
      true if task was run, false if queue was empty
    • hasQueuedTasks

      public boolean hasQueuedTasks()
      Returns:
      true if there are queued pending tasks
    • shutdown

      public void shutdown()
    • shutdownNow

      public List<Runnable> shutdownNow()
    • isShutdown

      public boolean isShutdown()
    • isTerminated

      public boolean isTerminated()
    • awaitTermination

      public boolean awaitTermination(long l, TimeUnit timeUnit) throws InterruptedException
      Throws:
      InterruptedException
    • execute

      public void execute(Runnable command)
    • newTaskFor

      protected <T> RunnableFuture<T> newTaskFor(Runnable runnable, T value)
      Overrides:
      newTaskFor in class AbstractExecutorService
    • newTaskFor

      protected <T> RunnableFuture<T> newTaskFor(Callable<T> callable)
      Overrides:
      newTaskFor in class AbstractExecutorService