public static void idleMainLooper(long amount, TimeUnit unit) { getShadowMainLooper().idle(amount, unit); }
public static void runMainLooperOneTask() { getShadowMainLooper().runOneTask(); }
/** * Puts the main ShadowLooper in an "unpaused" state. * * @see #unPauseLooper */ public static void unPauseMainLooper() { getShadowMainLooper().unPause(); }
/** * Runs any immediately runnable tasks previously queued on the UI thread, * e.g. by {@link android.app.Activity#runOnUiThread(Runnable)} or {@link android.os.AsyncTask#onPostExecute(Object)}. * * **Note:** calling this method does not pause or un-pause the scheduler. * * @see #runUiThreadTasksIncludingDelayedTasks */ public static void runUiThreadTasks() { getShadowMainLooper().idle(); }
/** * Runs all runnable tasks (pending and future) that have been queued on the UI thread. Such tasks may be queued by * e.g. {@link android.app.Activity#runOnUiThread(Runnable)} or {@link android.os.AsyncTask#onPostExecute(Object)}. * * **Note:** calling this method does not pause or un-pause the scheduler, however the clock is advanced as * future tasks are run. * * @see #runUiThreadTasks */ public static void runUiThreadTasksIncludingDelayedTasks() { getShadowMainLooper().runToEndOfTasks(); }
/** * Puts the main ShadowLooper in an "paused" state. * * @see #pauseLooper */ public static void pauseMainLooper() { getShadowMainLooper().pause(); }
public static void idleMainLooper() { getShadowMainLooper().idle(); }
public static void runMainLooperToNextTask() { getShadowMainLooper().runToNextTask(); }
public static void idleMainLooperConstantly(boolean shouldIdleConstantly) { getShadowMainLooper().idleConstantly(shouldIdleConstantly); }
private void waitForLatch(CountDownLatch latch) { try { latch.await(10, TimeUnit.SECONDS); } catch (InterruptedException e) { throw new RuntimeException(e); } ShadowLooper.getShadowMainLooper().runToEndOfTasks(); }
@Implementation public void removeMessages(Handler handler, int what, Object object) { Looper looper = ShadowLooper.getLooperForThread(looperThread); if (shadowOf(looper) instanceof CustomLooper && shadowOf(looper) != ShadowLooper.getShadowMainLooper()) { ((CustomLooper) shadowOf(looper)).removeMessages(handler, what, object); } } }
@Test public void shadowMainLooper_shouldBeShadowOfMainLooper() { assertThat(ShadowLooper.getShadowMainLooper()).isSameAs(shadowOf(Looper.getMainLooper())); }
@Implementation @Override public boolean enqueueMessage(Message msg, long when) { Looper looper = ShadowLooper.getLooperForThread(looperThread); if (shadowOf(looper) instanceof CustomLooper && shadowOf(looper) != ShadowLooper.getShadowMainLooper()) { ((CustomLooper) shadowOf(looper)).addPendingMessage(msg, when); } else { super.enqueueMessage(msg, when); } return true; }
@Before public void setUp() { initMocks(this); updatable = mockUpdatable(); updateDispatcher = updateDispatcher(); delayedExecutor = new SingleSlotDelayedExecutor(); monitoredSupplier = new InterruptibleMonitoredSupplier(); when(mockSupplier.get()).thenReturn(UPDATED_VALUE); looper = getShadowMainLooper(); }
@Test public void reset_setsGlobalScheduler_forMainLooper_byDefault() { ShadowLooper sMainLooper = ShadowLooper.getShadowMainLooper(); Scheduler s = new Scheduler(); RuntimeEnvironment.setMasterScheduler(s); sMainLooper.reset(); assertThat(sMainLooper.getScheduler()).isSameAs(s); }
@Implementation public void removeMessages(Handler handler, int what, Object object) { Looper looper = ShadowLooper.getLooperForThread(looperThread); if (shadowOf(looper) instanceof CustomLooper && shadowOf(looper) != ShadowLooper.getShadowMainLooper()) { ((CustomLooper) shadowOf(looper)).removeMessages(handler, what, object); } } }
@Test public void setUpApplicationState_configuresGlobalScheduler() { bootstrapWrapper.callSetUpApplicationState(); assertThat(RuntimeEnvironment.getMasterScheduler()) .isSameAs(ShadowLooper.getShadowMainLooper().getScheduler()); assertThat(RuntimeEnvironment.getMasterScheduler()) .isSameAs(ShadowApplication.getInstance().getForegroundThreadScheduler()); }
@Test public void reset_setsGlobalScheduler_forMainLooper_withAdvancedScheduling() { setAdvancedScheduling(); ShadowLooper sMainLooper = ShadowLooper.getShadowMainLooper(); Scheduler s = new Scheduler(); RuntimeEnvironment.setMasterScheduler(s); sMainLooper.reset(); assertThat(sMainLooper.getScheduler()).isSameAs(s); }
@Test public void asyncIgnoredPre16() { ReflectionHelpers.setStaticField(Build.VERSION.class, "SDK_INT", 14); ShadowLooper mainLooper = ShadowLooper.getShadowMainLooper(); mainLooper.pause(); ShadowMessageQueue mainMessageQueue = shadowOf(Looper.getMainLooper().getQueue()); Scheduler main = AndroidSchedulers.from(Looper.getMainLooper(), true); main.scheduleDirect(new Runnable() { @Override public void run() { } }); Message message = mainMessageQueue.getHead(); assertFalse(message.isAsynchronous()); } }
@Implementation @Override public boolean enqueueMessage(Message msg, long when) { Looper looper = ShadowLooper.getLooperForThread(looperThread); if (shadowOf(looper) instanceof CustomLooper && shadowOf(looper) != ShadowLooper.getShadowMainLooper()) { ((CustomLooper) shadowOf(looper)).addPendingMessage(msg, when); } else { super.enqueueMessage(msg, when); } return true; }