¿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

  • Appcompat CardView y Picasso sin esquinas redondeadas
  • ¿Cómo puedo acceder a la imagen en caché de Picasso para hacer una intención de compartir?
  • ¿Puedo cargar una imagen con Picasso en la barra de acción?
  • Obteniendo el ancho y altura de la imagen con la biblioteca picasso
  • Descargando la imagen del almacenamiento de firebase usando picasso: excepción de memoria
  • Picasso "Cambiar tamaño y centerCrop" o ImageView "centerCrop"?
  • Uso de Picasso para cargar una imagen en un mapa de bits
  • Picasso: fuera de la memoria
  • Android borrar algunas fotos de caché Picasso
  • Cómo cargar un mapa de bits en una vista de imagen con Picasso
  • Android Picasso - Marcador de posición y estilo de imagen de error
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.