@OnLifecycleEvent(Lifecycle.Event.ON_STOP) void pauseAll() { checkMain(); List<Action> actions = new ArrayList<>(targetToAction.values()); //noinspection ForLoopReplaceableByForEach for (int i = 0, n = actions.size(); i < n; i++) { Action action = actions.get(i); dispatcher.dispatchPauseTag(action.getTag()); } List<DeferredRequestCreator> deferredRequestCreators = new ArrayList<>(targetToDeferredRequestCreator.values()); //noinspection ForLoopReplaceableByForEach for (int i = 0, n = deferredRequestCreators.size(); i < n; i++) { DeferredRequestCreator deferredRequestCreator = deferredRequestCreators.get(i); Object tag = deferredRequestCreator.getTag(); if (tag != null) { dispatcher.dispatchPauseTag(tag); } } }
@OnLifecycleEvent(Lifecycle.Event.ON_START) void resumeAll() { checkMain(); List<Action> actions = new ArrayList<>(targetToAction.values()); //noinspection ForLoopReplaceableByForEach for (int i = 0, n = actions.size(); i < n; i++) { Action action = actions.get(i); dispatcher.dispatchResumeTag(action.getTag()); } List<DeferredRequestCreator> deferredRequestCreators = new ArrayList<>(targetToDeferredRequestCreator.values()); //noinspection ForLoopReplaceableByForEach for (int i = 0, n = deferredRequestCreators.size(); i < n; i++) { DeferredRequestCreator deferredRequestCreator = deferredRequestCreators.get(i); Object tag = deferredRequestCreator.getTag(); if (tag != null) { dispatcher.dispatchResumeTag(tag); } } }
/** * Cancel any existing requests with given tag. You can set a tag * on new requests with {@link RequestCreator#tag(Object)}. * * @see RequestCreator#tag(Object) */ public void cancelTag(@NonNull Object tag) { checkMain(); checkNotNull(tag, "tag == null"); List<Action> actions = new ArrayList<>(targetToAction.values()); //noinspection ForLoopReplaceableByForEach for (int i = 0, n = actions.size(); i < n; i++) { Action action = actions.get(i); if (tag.equals(action.getTag())) { cancelExistingRequest(action.getTarget()); } } List<DeferredRequestCreator> deferredRequestCreators = new ArrayList<>(targetToDeferredRequestCreator.values()); //noinspection ForLoopReplaceableByForEach for (int i = 0, n = deferredRequestCreators.size(); i < n; i++) { DeferredRequestCreator deferredRequestCreator = deferredRequestCreators.get(i); if (tag.equals(deferredRequestCreator.getTag())) { deferredRequestCreator.cancel(); } } }
@Test public void cancelTagAllDeferredRequests() { ImageView target = mockImageViewTarget(); DeferredRequestCreator deferredRequestCreator = mockDeferredRequestCreator(); when(deferredRequestCreator.getTag()).thenReturn("TAG"); picasso.defer(target, deferredRequestCreator); picasso.cancelTag("TAG"); verify(deferredRequestCreator).cancel(); }