Picasso Singleton用法

时间:2014-10-22 16:54:42

标签: android singleton picasso

我在我的应用程序中使用Picasso。

首先,我只使用以下格式:

Picasso.with(context)....into(imgView);

这种方式我假设我使用毕加索作为单身人士。我吗?

其次,我想使用setIndicatorsEnabled。但是它不能添加到上面的格式,因为它不是静态方法。有没有办法以上面的格式使用这个功能?

第三,如果我需要使用Picasso.Builder(...).build()创建自定义实例才能使用setIndicatorsEnabled,那么在应用活动中实现单例使用的最佳方式是什么?

3 个答案:

答案 0 :(得分:10)

是的,当你使用Picasso.with(context)时,你认为Picasso是一个单例实例....

启用设置指示器

Picasso mPicasso = Picasso.with(context);
mPicasso.setIndicatorsEnabled(true);
mPicasso....load().into(imageView);

如果您使用构建器,则应创建自己的单例来保存Picasso的实例,并在完成后将其清理干净。每次使用毕加索时都不要使用构建器,因为它会创建一个新实例。我相信Picasso.with(context)只需要你的上下文并调用getApplicationContext并将picasso的单例实例与应用程序上下文一起存储。

答案 1 :(得分:3)

这是实现单身毕加索课程的好方法

public class ImageHandler {

    private static Picasso instance;

    public static Picasso getSharedInstance(Context context)
    {
        if(instance == null)
        {
            instance = new Picasso.Builder(context).executor(Executors.newSingleThreadExecutor()).memoryCache(Cache.NONE).indicatorsEnabled(true).build();
        }
        return instance;
    }
}

然后在代码中实现它将如下:

    ImageHandler.getSharedInstance(getApplicationContext()).load(imString).skipMemoryCache().resize(width, height).into(image, new Callback() {
        @Override
        public void onSuccess() {
            layout.setVisibility(View.VISIBLE);
        }

        @Override
        public void onError() {

        }
    });

请注意,如果没有必要,您不必实施回调

答案 2 :(得分:0)

当前方法似乎是使用setSingletonInstance

在您的应用程序创建中运行此程序

Picasso.setSingletonInstance(Picasso.Builder(context).build()