La memoria es un recurso valioso en cualquier entorno de desarrollo de software, pero es aún más valiosa en un sistema operativo móvil donde la memoria física suele tener restricciones. Esto es especialmente cierto para los dispositivos con poca memoria nativa que, en general, ejecutan Android (edición Go). Existen varias formas de optimizar la memoria de tu app a fin de que se ejecute sin problemas en estos entornos.
Prácticas recomendadas
Libera memoria caché
Es posible que no haya suficiente memoria para mantener en ejecución los procesos en segundo plano tal y como sucedería en un entorno típico. En este caso, puedes usar la función onTrimMemory()
para cortar la memoria innecesaria del proceso de tu app. A fin de identificar mejor el nivel de recorte actual de tu app, usa el elemento ActivityManager.getMyMemoryState(RunningAppProcessInfo)
y optimiza o corta los recursos innecesarios. Por ejemplo, puedes cortar el uso innecesario de memoria de las expresiones, búsquedas, vistas de caché o extensiones que se pueden abrir a los efectos de reducir la cantidad de veces que tu app experimenta fallas o errores de ANR debido a la poca memoria.
Programación de tareas
La programación simultánea puede hacer que varias operaciones con uso intensivo de memoria se ejecuten en paralelo, lo que genera competencia por los recursos que exceden el uso máximo de memoria de una app. Para asignar los recursos de forma adecuada, separa los procesos en tareas intensivas de CPU de baja latencia en el grupo de subprocesos correcto a fin de ejecutarlos en dispositivos que puedan enfrentar varias restricciones de recursos.
Fugas de memoria
Varias herramientas, como el Generador de perfiles de memoria en Android Studio y Perfetto están específicamente disponibles para ayudar a encontrar y reducir las fugas de memoria dentro de la app. Te recomendamos que uses estas herramientas para identificar y solucionar posibles problemas de memoria a fin de permitir que otros componentes de la app se ejecuten sin problemas adicionales en el sistema.
Otras sugerencias
- Las imágenes o los elementos de diseño grandes consumen más memoria en las apps. Identifica y optimiza mapas de bits grandes o que sean a todo color a fin de reducir el uso de memoria.
- Cuando crees contenido para Android (edición Go), intenta elegir otras opciones distintas a los elementos GIF, ya que estos consumen mucha memoria.
- Puedes reducir el tamaño de un archivo PNG sin perder la calidad de la imagen mediante herramientas como WebP, pngcrush y pngquant. Todas estas reducen el tamaño del archivo y, a la vez, preservan la calidad perceptiva de la imagen.
- Con la herramienta aapt, se pueden optimizar los recursos de imagen que se encuentran en
res/drawable/
mediante una compresión sin pérdidas durante el proceso de compilación. Por ejemplo, la herramienta aapt puede convertir un archivo PNG con color verdadero en el que no se necesitan más de 256 colores en un PNG de 8 bits con una paleta de colores. De este modo, la imagen tiene la misma calidad, pero el uso de memoria es menor.