Buenas prácticas para consumo Memoria - MISW-4203-2023/Vinilos GitHub Wiki
Para ser responsable con el consumo de memoria en la aplicación y ya que nuestra aplicación está hecha sobre jetpack compose, se hace uso de Listas Diferidas (Lazy List en inglés)
@Composable
fun AlbumsList(
albumList: List<Album>,
goToDetail: (id: Long) -> Unit,
modifier: Modifier = Modifier
) {
LazyColumn(modifier = modifier.testTag("albums_list")) {
items(albumList) { album ->
AlbumCard(album = album, goToDetail = goToDetail)
Divider()
}
}
}Ejemplo de uso de una LazyColumn
Por otro lado y aunque no esté relacionado directamente con la memoria, la librería coil nos da la posibilidad de guardar en cache las imágenes y determinar el tamaño disponible en disco y memoria para esta cache. De esta manera el uso de los recursos de red se ven también optimizados.
Se realizó la implementación de Proto Buf Datastore como solución para almacenar el listado de artistas favoritos, aprovechando la capacidad que se tiene este tipo de almacenamiento de datos para la optimización de procesos a través de corroutinas y por ende la mejora en el consumo de memoria que con otros tipos de implementaciones se tornaría en procesos largos que consumen mucha memoria. Además se utilizó un ViewModel que junto con UiState propio, entrega los datos a las vista detalle de artista.
Algunas ventajas de protobuf como solución de almacenamiento:
Almacenamiento de datos compactos Parseo rápido Optimizado a través de las clases generadas automáticamente.
