Alguien me preguntó sobre un problema que estaba teniendo al mostrar un ListView que tenía una imagen para cada celda. Cuando el usuario se movía por la lista, las imágenes parpadeaban y la interfaz de usuario se comportaba un poco lento. Las imágenes se estaban cargando desde internet.
El problema que tenía la persona era que no estaba usando una estrategia de almacenamiento en caché correcta para las imágenes y ahora voy a explicar cómo puedes solucionar este problema en caso de que te suceda.
Suficiente contexto, vamos a tirar código
Si deseas agregar caché a tu imagen, debes hacer algo como esto:
Vamos a proceder con una explicación
Ya seguro sabes que cuando quieres mostrar una imagen debes especificar la fuente (Source) de la imagen. Probablemente has la colocado como una URL o una ruta a un recurso, ambos se ven como cadenas, pero si miras un poco más, notarás que la propiedad Source de la imagen es en realidad de tipo ImageSource y se le puede asignar cualquier valor que herede de esta clase.
En el ejemplo del código, asignamos una instancia de UriImageSource a la propiedad Source . Esta clase tiene más propiedades, pero las tres en las que queremos centrarnos son:
- Uri: Esta es la dirección de la imagen que queremos mostrar.
- CachingEnabled: Este es un valor booleano que habilitará o inhabilitará el almacenamiento en caché. El valor por defecto es verdadero (true).
- CacheValidity: La marca de tiempo (TimeSpan) que determinará cuanto tiempo durará la imagen en caché. Los parámetros de marca de tiempo (TimeSpan) son Días, Horas, Minutos, Segundos. En el ejemplo de Código C#, estamos configurando el caché a 7 días. En la muestra XAML a 30 días.
Y eso es todo, bastante conciso y bastante útil. Puedes obtener más información sobre trabajar con imágenes y la fuente de la imagen destacada de en este artículo en la documentación oficial de Xamarin. ¡Adiós!