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.

1. Optimización de Listas (RecyclerView)

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.

2. Rendimiento de Gráficos (Vector Drawables)

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.

3. Optimización de Layouts (Jerarquía de Vistas)

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.

4. Reducción de Overdraw (Sobredibujo)

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.

5. Limpieza de Recursos (Tamaño de la App)

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.

⚠️ **GitHub.com Fallback** ⚠️