@Override public void call(final Subscriber<? super Bitmap> subscriber) { Preconditions.checkUiThread(); final Target target = new TargetAdapter() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { if (!subscriber.isUnsubscribed()) subscriber.onNext(bitmap); } @Override public void onBitmapFailed(Drawable errorDrawable) { if (!subscriber.isUnsubscribed()) subscriber.onError(new PicassoError(errorDrawable)); } }; Picasso.with(context) .load(resId) .noFade() .memoryPolicy(NO_CACHE, NO_STORE) .config(Bitmap.Config.ARGB_8888) .transform(new PicassoTransformation(context, radius)) .into(target); subscriber.add( new MainThreadSubscription() { @Override protected void onUnsubscribe() { Picasso.with(context).cancelRequest(target); PicassoBlurOnSubscribe.this.context = null; } }); }