void defer(ImageView view, DeferredRequestCreator request) { // If there is already a deferred request, cancel it. if (targetToDeferredRequestCreator.containsKey(view)) { cancelExistingRequest(view); } targetToDeferredRequestCreator.put(view, request); }
/** Cancel any existing requests for the specified target {@link ImageView}. */ public void cancelRequest(@NonNull ImageView view) { // checkMain() is called from cancelExistingRequest() checkNotNull(view, "view == null"); cancelExistingRequest(view); }
/** Cancel any existing requests for the specified {@link BitmapTarget} instance. */ public void cancelRequest(@NonNull BitmapTarget target) { // checkMain() is called from cancelExistingRequest() checkNotNull(target, "target == null"); cancelExistingRequest(target); }
void enqueueAndSubmit(Action action) { Object target = action.getTarget(); if (targetToAction.get(target) != action) { // This will also check we are on the main thread. cancelExistingRequest(target); targetToAction.put(target, action); } submit(action); }
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) void cancelAll() { 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); 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); deferredRequestCreator.cancel(); } }
/** * Cancel any existing requests for the specified {@link RemoteViews} target with the given {@code * viewId}. */ public void cancelRequest(@NonNull RemoteViews remoteViews, @IdRes int viewId) { // checkMain() is called from cancelExistingRequest() checkNotNull(remoteViews, "remoteViews == null"); cancelExistingRequest(new RemoteViewsAction.RemoteViewsTarget(remoteViews, viewId)); }
/** * 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(); } } }