Micro‐optimizaciones Sprint 2 - jcrinconv/MISW4203-2026-12-ing-sw-apps-moviles GitHub Wiki
Para las micro-optimizaciones, se realizó un análisis de la aplicación con Lint, el cual puede ver a continuación:
Basado en estas sugerencias, se realizaron las micro-optimizaciones listadas abajo. Si desea consultar los cambios en el código fuente, puede dirigirse al PR #91 Fix/micro optimizations.
Se detectaron múltiples usos de notifyDataSetChanged() en AlbumAdapter.kt, MusicianAdapter.kt y TrackAdapter.kt.
Optimización: Reemplaza notifyDataSetChanged() por DiffUtil o métodos más específicos como notifyItemInserted() o notifyItemChanged(). Esto evita que el RecyclerView tenga que redibujar y re-medir todos los elementos de la lista, mejorando significativamente la fluidez del scroll.
Varios iconos vectoriales (ic_album.xml, ic_artists.xml, ic_trophy.xml, etc.) tienen rutas (pathData) muy largas o son demasiado grandes (ic_search.xml mide 512dp).
Optimización: Simplifica los vectores usando herramientas de optimización (como SVGOMG), reduce su precisión o, en el caso de rutas extremadamente complejas, considera usar una imagen rasterizada (PNG/WebP) para evitar el alto costo de procesamiento al dibujar el vector.
Se encontraron "Nested weights" (pesos anidados) en fragment_album_list.xml y fragment_musician_detail.xml.
Optimización: Evita anidar LinearLayouts que usen layout_weight. Esto obliga al sistema a realizar múltiples pasos de medición (exponential measurement), lo que ralentiza el renderizado de la interfaz. Considera usar ConstraintLayout para aplanar la jerarquía.
En fragment_album_detail.xml, el elemento raíz define un fondo que podría estar solapándose con el fondo del tema.
Optimización: Si el fondo del fragmento es el mismo que el del tema, elimina el android:background del layout. Si es diferente, asegúrate de que el tema de esa actividad no dibuje un fondo innecesario debajo.
Existen múltiples recursos no utilizados (colores como surface_container, primary, el string swap_order_description, y el estilo CircleImage).
Optimización: Elimina estos recursos para reducir el tamaño final del APK y simplificar el mantenimiento del código. Otras recomendaciones importantes:
Corrección de IDs: Tienes IDs duplicados en fragment_home.xml por el uso de . Esto puede causar errores inesperados al intentar acceder a las vistas desde el código.
Accesibilidad: Agrega contentDescription a los ImageView en fragment_album_detail.xml e item_menu_card.xml para mejorar la experiencia de usuarios con lectores de pantalla.
Internacionalización: Mueve los textos "Ver más", "Álbumes", "Título", etc., a strings.xml en lugar de tenerlos hardcoded en los layouts o en el código.