我在我的应用程序中使用Picasso。
首先,我只使用以下格式:
Picasso.with(context)....into(imgView);
这种方式我假设我使用毕加索作为单身人士。我吗?
其次,我想使用setIndicatorsEnabled
。但是它不能添加到上面的格式,因为它不是静态方法。有没有办法以上面的格式使用这个功能?
第三,如果我需要使用Picasso.Builder(...).build()
创建自定义实例才能使用setIndicatorsEnabled
,那么在应用活动中实现单例使用的最佳方式是什么?
答案 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()