onBitmapLoaded从未调用过

时间:2015-11-09 10:33:10

标签: android bitmap picasso

我遇到onBitmapLoaded的问题。该方法应该在它应该被调用时(它被称为第二次进入我的视图)。不过,我保留了对目标的引用,因为我将其添加到arraylist

我不明白为什么它不起作用。 有人有想法吗?

public void loadBitmap() {

    if(loadtarget == null) {
        loadtarget = new Target(){

            @Override
            public void onPrepareLoad(Drawable arg0) {
                Log.d("Bitmap","On prepare load");
                targetList.remove(this);
                return;
            }

            @Override
            public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                Log.d("Bitmap","OKAY for :" + filename);
                targetList.remove(this);
                handleLoadedBitmap(bitmap);
            }

            @Override
            public void onBitmapFailed(Drawable errorDrawable) {
                Log.d("Bitmap","Error for :" + filename);
            }
        };
    }
    targetList.add(loadtarget);
    Picasso.with(context).load(imageUrl).into(loadtarget);
}

2 个答案:

答案 0 :(得分:0)

如果targetList和loadtarget都是局部变量,那么一旦方法完成,它们将被标记为GC收集。 确保targetList是一个类变量,以使其比方法更长。

答案 1 :(得分:0)

我找到了一些解决问题的技巧。

替换: Picasso.with(上下文).load(IMAGEURL).into(targetList.get(I));

使用:

Picasso.with(context).load(imageUrl).transform(new Transformation() {

            @Override
            public Bitmap transform(Bitmap source) {
                handleLoadedBitmap(source);
                return source;
            }
            @Override
            public String key() {
                return "";
            }
        }).into(imageView); // imageView is a fictive imageView allocated only for this operation

我的代码正在运行。我不确定它是最好的解决方案,但它解决了我的问题。