如何清除Picasso在Android上加载的图片?

时间:2016-12-07 02:15:31

标签: android android-layout android-activity picasso

我有一个BackgroundImageActivity,使用Picasso加载背景图片。但是当我回到home(在BackgroundImageActivity中调用onStop())并进入此活动的另一个实例时,它应该加载另一个背景图像,但是在最初的2秒时,它仍然显示来自之前BackgroundImageActivity的图像。这是某种缓存吗?

如何清除此图像,以便每当我进入BackgroundImageActivity的新实例时,我都看不到上一张图像?

public class BackgroundImageActivity extends Activity {

    @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        initBackground();
    }

    @Override
    protected void onStop() {
        super.onStop();
        Picasso.invalidate(imageUrl, getApplicationContext());
    }

    private void initBackground() {
        ...
    }

    private void setBg(final String imageUrl, final int bg) {

        this.imageUrl = imageUrl;

        final RequestCreator picassoRequest = Picasso.load(imageUrl, bg).memoryPolicy(MemoryPolicy.NO_CACHE);

        targetReference = new Target() {
            @Override
            public void onBitmapLoaded(final Bitmap bitmap, final Picasso.LoadedFrom from) {
                ...
            }

            @Override
            public void onBitmapFailed(final Drawable errorDrawable) {
                ...
            }

            @Override
            public void onPrepareLoad(final Drawable placeHolderDrawable) {
                ...
            }
        };

        picassoRequest.placeholder(bg).error(bg).into(targetReference);
    }


}

感谢!!!

1 个答案:

答案 0 :(得分:0)

加载图片时使用这段代码。

 Picasso.with(getContext()).load(data.get(pos).getFeed_thumb_image()).memoryPolicy(MemoryPolicy.NO_CACHE).into(image);

picasso将图像直接设置为ImageView而不在后台缓存。这也使app的重量也很轻。