IntentService在Picasso加载Bitmap之前终止

时间:2016-05-25 20:21:23

标签: android picasso intentservice

我正在尝试使用IntentService处理和上传在不同进程中运行的图像以获得更多内存。我也使用Picasso加载图像。当Image很小时,位图成功加载并上传,但是如果图像很大,则在Picasso加载It之前终止IntentService。

毕加索必须在UIThread上运行

这是代码。

npairs

1 个答案:

答案 0 :(得分:0)

这个问题很老了,但是如果有人走过的话。 Target在显示位图之前会收集垃圾。

像这样使用

public class BitmapLoader {

public static Target getViewTarget(final OnImageLoadingCompleted onCompleted) {
    return new Target() {
        @Override
        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
            onCompleted.imageLoadingCompleted(bitmap);
        }

        @Override
        public void onBitmapFailed(Drawable errorDrawable) {

        }

        @Override
        public void onPrepareLoad(Drawable placeHolderDrawable) {

        }
    };
}
}

您需要对Target有一个强烈的引用,所以在IntentService中有一个字段,例如。

private Target viewTarget;

viewTarget = BitmapLoader.getViewTarget(bitmap -> {
           // do stuff with the bitmap
        });
 new Handler(Looper.getMainLooper()).post(() -> Picasso.with(getApplicationContext()).load(object.getImageUrl()).into(viewTarget));