/** * Clear {@link Graph.Monitor} which will be called the graph is about to inject or release an object */ public void clearMonitors() { if (uiThreadRunner.isOnUiThread()) { graph.clearMonitors(); } else { uiThreadRunner.post(new Runnable() { @Override public void run() { graph.clearMonitors(); } }); } }
@Override public void run() { if (!canceled) { if (incrementing) { increment(this); } else { decrement(this); } uiThreadRunner.postDelayed(this, INTERVAL); } }
/** * Reference an injectable object and retain it. Use * {@link #dereference(Object, Class, Annotation)} to dereference it when it's not used * any more. * @param type the type of the object * @param qualifier the qualifier * @return */ public <T> T reference(Class<T> type, Annotation qualifier) throws ProviderMissingException, ProvideException, CircularDependenciesException { if (!uiThreadRunner.isOnUiThread()) { throw new MvcGraphException("Cannot reference an instance from Non-UiThread"); } return graph.reference(type, qualifier, Inject.class); }
@Test public void should_be_able_to_post_on_default_ui_thread_runner() { new MvcGraph().uiThreadRunner.post(mock(Runnable.class)); new MvcGraph().uiThreadRunner.postDelayed(mock(Runnable.class), 100); }
private void updateToolbar(final NavLocation location) { uiThreadRunner.post(new Runnable() { @Override public void run() { doUpdateNavIcon(location); } }); }
@Test public void should_throw_exception_when_mvc_graph_register_monitor_on_non_main_thread() throws Graph.IllegalRootComponentException { when(graph.uiThreadRunner.isOnUiThread()).thenReturn(false); graph.registerMonitor(mock(Graph.Monitor.class)); when(graph.uiThreadRunner.isOnUiThread()).thenReturn(true); graph.registerMonitor(mock(Graph.Monitor.class)); }
@Test public void default_uiThreadRunner_should_post_on_same_thread() { final Thread thread = Thread.currentThread(); graph.uiThreadRunner.post(new Runnable() { @Override public void run() { Assert.assertTrue(Thread.currentThread() == thread); } }); }
/** * Clear {@link Provider.DereferenceListener}s which will be called when the last cached * instance of an injected contract is freed. */ public void clearDereferencedListeners() { if (uiThreadRunner.isOnUiThread()) { graph.clearDereferencedListeners(); } else { uiThreadRunner.post(new Runnable() { @Override public void run() { graph.clearDereferencedListeners(); } }); } } }
@Test public void should_throw_exception_when_mvc_graph_dreference_on_non_main_thread() throws ProvideException, CircularDependenciesException, ProviderMissingException { when(graph.uiThreadRunner.isOnUiThread()).thenReturn(false); graph.dereference(this, TestMvcGraph.class, null); when(graph.uiThreadRunner.isOnUiThread()).thenReturn(true); graph.dereference(this, TestMvcGraph.class, null); }
uiThreadRunner.post(new Runnable() { @Override public void run() { uiThreadRunner.post(new Runnable() { @Override public void run() { uiThreadRunner.post(new Runnable() { @Override public void run() { monitor.setState(Task.Monitor.State.ERRED); if (callback != null) { uiThreadRunner.post(new Runnable() { @Override public void run() { uiThreadRunner.post(new Runnable() { @Override public void run() {
@Test public void default_uiThreadRunner_should_post_with_delay_on_same_thread() { final Thread thread = Thread.currentThread(); graph.uiThreadRunner.postDelayed(new Runnable() { @Override public void run() { Assert.assertTrue(Thread.currentThread() == thread); } }, 100); } }
/** * Register {@link Graph.Monitor} which will be called the graph is about to inject or release an object * * @param monitor The monitor */ public void unregisterMonitor(final Graph.Monitor monitor) { if (uiThreadRunner.isOnUiThread()) { graph.unregisterMonitor(monitor); } else { uiThreadRunner.post(new Runnable() { @Override public void run() { graph.unregisterMonitor(monitor); } }); } }
@Test public void should_throw_exception_when_mvc_graph_clear_deferenceListeners_on_non_main_thread() throws Graph.IllegalRootComponentException { when(graph.uiThreadRunner.isOnUiThread()).thenReturn(false); graph.clearDereferencedListeners(); when(graph.uiThreadRunner.isOnUiThread()).thenReturn(true); graph.clearDereferencedListeners(); }
uiThreadRunner.post(new Runnable() { @Override public void run() {
@Override public void run() { if (!canceled) { if (count ++ <= AUTO_FINISH_COUNT) { counterManager.setCount(this, counterManager.getModel().getCount() + 1); uiThreadRunner.postDelayed(this, 1000); } else { view.counterFinished(); } } }
/** * Register {@link Graph.Monitor} which will be called the graph is about to inject or release an object * * @param monitor The monitor */ public void registerMonitor(final Graph.Monitor monitor) { if (uiThreadRunner.isOnUiThread()) { graph.registerMonitor(monitor); } else { uiThreadRunner.post(new Runnable() { @Override public void run() { graph.registerMonitor(monitor); } }); } }
@Test public void should_throw_exception_when_mvc_graph_register_deferenceListener_on_non_main_thread() throws Graph.IllegalRootComponentException { when(graph.uiThreadRunner.isOnUiThread()).thenReturn(false); graph.registerDereferencedListener(mock(Provider.DereferenceListener.class)); when(graph.uiThreadRunner.isOnUiThread()).thenReturn(true); graph.registerDereferencedListener(mock(Provider.DereferenceListener.class)); }
return null; }).when(uiThreadRunner).post(any(Runnable.class));
/** * Dereference an injectable object. When it's not referenced by anything else after this * dereferencing, release its cached instance if possible. * @param instance the instance is to release * @param type the type of the object * @param qualifier the qualifier */ public <T> void dereference(T instance, Class<T> type, Annotation qualifier) throws ProviderMissingException { if (uiThreadRunner.isOnUiThread()) { } else { uiThreadRunner.post(new Runnable() { @Override public void run() { } }); } graph.dereference(instance, type, qualifier, Inject.class); }
@Test public void should_throw_exception_when_mvc_graph_unregister_deferenceListener_on_non_main_thread() throws Graph.IllegalRootComponentException { when(graph.uiThreadRunner.isOnUiThread()).thenReturn(false); graph.unregisterDereferencedListener(mock(Provider.DereferenceListener.class)); when(graph.uiThreadRunner.isOnUiThread()).thenReturn(true); graph.unregisterDereferencedListener(mock(Provider.DereferenceListener.class)); }