¿Está bien crear una nueva instancia de picasso cada vez

¿Está bien para crear una nueva instalación de picasso para cargar cada imagen.Por ejemplo, algo así como:

Picasso.with(context) .load(url) .placeholder(R.drawable.placeholder) .error(R.drawable.error) .centerInside( .tag(context) .into(holder.image); 

En getView() de un listAdaptor . ¿No crea nuevo LruCache cada vez que conducirá eventual a OOM.

También puede el Context pasado a Picasso puede ser un Activity Context :

 /** Start building a new {@link Picasso} instance. */ public Builder(Context context) { if (context == null) { throw new IllegalArgumentException("Context must not be null."); } this.context = context.getApplicationContext(); } 

Picasso está diseñado para ser un singleton, así que no hay una nueva instancia creada cada vez.

Este es el método with() :

 public static Picasso with(Context context) { if (singleton == null) { synchronized (Picasso.class) { if (singleton == null) { singleton = new Builder(context).build(); } } } return singleton; } 

Tenga en cuenta que es un método estático para que no llame with() en una instancia determinada, Picasso está administrando su propia instancia, que sólo se crea si singleton es null .

No hay ningún problema al pasar una Activity como contexto, ya que el Builder utilizará ApplicationContext, que es un single, global Application object of the current process :

 public Builder(Context context) { if (context == null) { throw new IllegalArgumentException("Context must not be null."); } this.context = context.getApplicationContext(); } 

En cuanto a la memoria caché, la misma se utiliza cada vez, ya que es retenida por el singleton:

 public Picasso build() { // code removed for clarity if (cache == null) { cache = new LruCache(context); } // code removed for clarity return new Picasso(context, dispatcher, cache, listener, transformer, requestHandlers, stats, defaultBitmapConfig, indicatorsEnabled, loggingEnabled); } 

¡Kalyan tiene razón! Picasso ya es un singleton, por lo que utiliza la misma instancia para todas las imágenes que cargas. También eso significa que usted no necesitará a ese constructor. Simplemente llame a: "Picasso.with (context) .load (url) .into (holder.image);" Con la configuración que desea y eso es todo.

 Its not problem..You are not creating Object 

Picasso ya es SingleTon Object

Aquí está el código de Souce Clase Picasso

 public static Picasso with(Context context) { if (singleton == null) { synchronized (Picasso.class) { if (singleton == null) { singleton = new Builder(context).build(); } } } return singleton; } 

Más código fuente en Picasso Código fuente

  • Siempre se desvanecen en el marcador de posición con Picasso
  • Descargar múltiples imágenes de Picasso en Android
  • Imágenes de Picasso Library y GridView
  • Descargar y guardar imágenes con Picasso
  • No se puede cargar la imagen desde el disco con picasso
  • Picasso Imagen descargada de nuevo para un ImageView con diferentes dimensiones?
  • ¿Picasso aplica opciones de redimensionamiento durante fetch ()?
  • Android Picasso - Marcador de posición y estilo de imagen de error
  • Custom Downloader con Picasso
  • Picasso - obtener el camino de la imagen cargada
  • Visualización de una imagen descargada de Internet como anotación - Uso de Picasso
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.