// main thread public void removeTarget(final ImageConsumer consumer) { if (imagesManager.debug) { Log.d(TAG, "Cancel request: " + request.getKey() + "\nLoader: " + this); } consumer.onCancel(request.url); synchronized (targets) { targets.remove(consumer); if (targets.isEmpty()) { if (!future.cancel(true)) { if (imagesManager.debug) { Log.d(TAG, "Can't cancel task so let's try to remove loader manually"); } imagesManager.currentLoads.remove(request.getKey(), this); } } } }