Picasso Singleton用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Picasso Singleton用法相关的知识,希望对你有一定的参考价值。

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

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

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

这样我认为我使用毕加索作为单身人士。我呢?

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

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

答案

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

使用设置指示器

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

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

另一答案

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

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() {

        }
    });

请注意,如果不必要,您不必实现回调

另一答案

目前的方法似乎是使用setSingletonInstance

在你的应用程序创建中运行:

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

以上是关于Picasso Singleton用法的主要内容,如果未能解决你的问题,请参考以下文章

csharp C#代码片段 - 使类成为Singleton模式。 (C#4.0+)https://heiswayi.github.io/2016/simple-singleton-pattern-us

Picasso 2.71828 用法

Android图片加载框架Picasso最全使用教程 三

Picasso

Picasso源码解析 一

Picasso源码解析 一