¿Por qué mi dispositivo Android se ralentiza después de sucesivas actualizaciones de ROM sin borrar?

Tengo un Verizon Galaxy Nexus (toro) de 32 GB. Estoy ejecutando Cyanogenmod 10.1 ROM nightlies y uso CyanDelta Updater para mantenerme actualizado.

Durante un período de aproximadamente 3 semanas, actualicé a la última versión nocturna casi todos los días usando CyanDelta. A veces descargaba la ROM completa en lugar de usar CyanDelta. Durante este tiempo, nunca borré el dispositivo (también conocido como restablecimiento de fábrica). Acabo de aplicar la nueva versión sobre la anterior.

Recientemente, el rendimiento de mi teléfono se degradó significativamente. Hubo largos retrasos en el desbloqueo, largos retrasos en el cambio de aplicaciones, largos retrasos en casi todo. El teléfono se congelaba y el sistema operativo me preguntaba si quería finalizar un proceso porque no respondía. Mi podcatcher tartamudeaba mientras jugaba.

En lugar de cambiar a otra ROM, decidí hacer primero un borrado completo (restablecimiento de fábrica). Usé Titanium Backup para hacer una copia de seguridad de mis aplicaciones y datos de usuario. En TeamWin Recovery, hice un restablecimiento de fábrica, actualicé el mismo CM 10.1 todas las noches que estaba ejecutando anteriormente, restauré mis aplicaciones usando Titanium, inicié sesión en cuentas, etc.

El rendimiento de mi teléfono ha sido completamente restaurado. Es como la noche y el día.

Mi pregunta es: ¿Por qué funcionó eso? ¿Qué tiene eso de aplicar sucesivas versiones de ROM que podrían provocar una ralentización que se solucionaría con un wipe?

Me encanta mi nuevo nivel de rendimiento, pero también disfruto de estar al día con los últimos lanzamientos. Parecería que no puedo tener mis gominolas y comérmelas también. Ahora soy reacio a actualizar cualquier actualización sin hacer un borrado completo.

Tengo el mismo problema, y ​​asumí que eran errores o no.
A veces, en lugar de un borrado completo, un borrado de Dalvik Cache también podría resolver esto (ahí es donde reside el código precompilado de las aplicaciones, que luego simplemente se volvería a generar en el momento del arranque), tal vez se fragmentó demasiado.
CyanDelta pretende borrar automáticamente el caché de Dalvik con cada actualización. Así que esa no es probablemente la solución.

Respuestas (4)

Se me ocurrió una posible respuesta: TRIM

Los discos de estado sólido (SSD) y algunas memorias flash requieren que el sistema operativo realice una especie de tarea de limpieza para mantener la eficiencia del dispositivo.

El comando del sistema operativo TRIM se explica en este artículo de AnandTech:

Su aplicabilidad a ciertos dispositivos Android, incluidos mi Samsung Galaxy Nexus y ASUS Nexus 7, se explica en estos hilos de XDA Developers:

Un miembro de XDA escribió una aplicación llamada LagFix que pretende ejercer la función de mantenimiento TRIM, restaurando así el rendimiento de escritura del dispositivo.

Dado que recientemente realicé un restablecimiento completo de fábrica, ya no tengo problemas de rendimiento y, por lo tanto, no puedo corroborar directamente los supuestos beneficios de LagFix. Si estoy en una posición en la que el rendimiento está sufriendo, puedo hacer algunas pruebas comparativas y ver si LagFix mejora la situación.

Tenga en cuenta que si planea probar LagFix, hay algunos dispositivos que tienen chips que NO funcionan bien con esta utilidad. Estos chips tienen lo que se conoce como BrickBug, y si ejecuta LagFix en uno de estos dispositivos, bloqueará irrevocablemente su dispositivo.

Le recomiendo que siga los consejos y lea las preguntas frecuentes de LagFix. Apunta a una utilidad que puede decirle si su dispositivo contiene un chip que puede sufrir el BrickBug.

Voy a aceptar mi propia respuesta aquí con una advertencia de "funciona para mí". Desde que instituí una operación TRIM nocturna usando LagFix, mi desempeño se ha mantenido aceptable (para mí). Continué mostrando CM 10.1 nightlies.
Actualización: según AnandTech, Android 4.3 trae TRIM a todos los dispositivos Nexus. Esto parecería reforzar mi respuesta anterior. anandtech.com/show/7185/…

Para responder a su pregunta, me gustaría citar algo llamado Dalvik VM y Android File System.

El sistema de archivos de Android tendría las siguientes particiones (como es común en la mayoría de los dispositivos), \system \boot \data \cache

Cada vez que actualice una nueva ROM y los archivos correspondientes se moverán a las particiones correspondientes.

Cuando actualiza una nueva rom sin borrarla, los archivos en todas las particiones se anularán (si los archivos tienen los mismos nombres) y algunos de los archivos más antiguos pueden permanecer como desechos.

\Caché \Datos

Las dos particiones anteriores son específicas de la ROM, siempre que haya nuevas aplicaciones instaladas, los datos temporales y su caché se crearán y almacenarán en las particiones respectivas. Cuando borre, los datos antiguos y los elementos de caché se borrarán.

Todas las aplicaciones de Android están optimizadas para dex (.odex) para ejecutarse en la máquina virtual dalvik (similar a Java VM). Estos elementos deben borrarse al pasar a diferentes roms.

Alguna información sobre dalvik - http://en.wikipedia.org/wiki/Dalvik_%28software%29

Como se mencionó anteriormente, el método de actualización que estoy usando borra automáticamente el caché de Dalvik.

TL;DR: rendimiento restaurado de mi ASUS Nexus 7 de 16 GB de 2012 al eliminar varios GB de archivos innecesarios.

Recientemente resolví un problema de rendimiento en mi ASUS Nexus 7 (16 GB, primera generación) usando una solución no relacionada con la solución LagFix/TRIM descrita anteriormente. Aunque LagFix parece haber resuelto el problema en mi Verizon Galaxy Nexus (el rendimiento sigue siendo excelente hasta el día de hoy), continué experimentando un rendimiento verdaderamente horrible e inaceptable en mi ASUS Nexus 7.

Mi investigación arrojó muchos informes de que si la memoria del Nexus 7 se "llena demasiado", el rendimiento se degrada significativamente. Mi dispositivo tenía 3 GB de memoria libre, por lo que era escéptico de que mi Nexus 7 estuviera "demasiado lleno".

Usé la excelente utilidad DiskUsage para inspeccionar el contenido de mi memoria flash de 16 GB para ver si podía liberar espacio. Descubrí un archivo de película que había visto hace mucho tiempo y olvidé que consumía varios GB de espacio.

Eliminé el archivo de la película, varias copias de seguridad antiguas de Nandroid y Titanium que ya no necesitaba, y eliminé un par de GB de podcasts que no necesitaba. Esto liberó varios GB en el dispositivo.

El rendimiento ahora es excelente en mi Nexus 7. Se siente como nuevo.

¿Tu desempeño mejoró inmediatamente? Acabo de eliminar aplicaciones y archivos para pasar de aproximadamente 1,7 GB gratis a 6,7 ​​GB gratis. Siento que partes del sistema son un poco más rápidas, pero en general muchas cosas siguen siendo tan lentas como antes.
Ha pasado más de un año desde que escribí lo anterior, y me temo que no recuerdo si el rendimiento mejoró "inmediatamente", lo siento. Además, ha habido muchas mejoras en las versiones más nuevas de Android. 5.0 Lollipop ya está disponible y debería estar disponible para el ASUS Nexus 7 de 2012. Ya no tengo ese dispositivo, así que no puedo ayudar más con el ASUS Nexus 7 de 2012.

Intenté borrar el caché de dalvik pero no funcionó, luego intenté borrar todos los datos y reinstalar CyanogenMod 11 pero tampoco funcionó. Luego se me ocurrió una solución que al usar CPU MASTER (disponible en Play Store) podemos establecer la frecuencia de nuestra CPU al máximo durante un tiempo permanente y Bloom, el resultado fue increíble. Lo preferiré a todos. Pero necesita root así que...

¡Hola Onkar y bienvenido a los entusiastas de Android! :) Si bien su respuesta tiene sentido, no aborda el problema central de la pregunta. La configuración de las frecuencias de la CPU probablemente siempre dará como resultado un mejor rendimiento, pero esto no es lo que se desea hacer aquí. También observe la duración de la batería a partir de ahora :)