Gracias por el A2A. He pasado más de 7 años creando aplicaciones para iOS y Android, y estas son las principales cosas que sé que ralentizan las aplicaciones o hacen que el usuario perciba un retraso.
Para iOS:
- Asegúrese de no crear ciclos de retención (A -> B, B -> A) ya que esto lleva a pérdidas de memoria. La regla general es que un niño nunca debe retener al padre. Si su aplicación está usando demasiada memoria, el sistema operativo podría decidir simplemente matarla. Si necesita que el niño tenga una referencia al padre, use una referencia débil.
- Mantenga las imágenes lo más pequeñas posible, por ejemplo, no cargue una imagen enorme en un UIImageView pequeño. Si permite que el usuario cargue contenido, cambie el tamaño de la imagen a muchos tamaños diferentes y elija el más pequeño que se vea bien en un UIImageView dado
- Siga bloqueando las llamadas fuera del hilo principal; esto hará que la aplicación se vea lenta si no lo hace (use un hilo de fondo, GCD o NSOperationQueue, por ejemplo). ¡Solo actualice la interfaz de usuario en el hilo principal!
- Si está utilizando CoreLocation, no use ciegamente kCLLocationAccuracyBestForNavigation, use la configuración más baja que le brinde suficiente precisión para sus propósitos. Utilice también distanceFilter en consecuencia
Para Android:
- Como desarrollador móvil, ¿por qué no prefiere BAAS móvil (back-end como servicio)? ¿Cuáles son los pros y los contras que encuentras?
- ¿Qué marco debo elegir para el desarrollo móvil multiplataforma?
- ¿Cuál es la diferencia entre MAPD y RMAD para el desarrollo de aplicaciones móviles?
- ¿Cuál debo elegir: iOS, Android o Windows Mobile para desarrollar mi aplicación móvil?
- ¿Qué opinas de doodleblue y su equipo de desarrollo de aplicaciones?
- No asigne muchos objetos rápidamente, esto ejerce presión sobre el GC y hace que el GC se active con más frecuencia, haciendo que la aplicación se detenga por completo mientras ejecuta ciclos de GC
- Si necesita asignar objetos, asígnelos una vez y guárdelos, o use un conjunto de objetos
- Asegúrese de .recycle () mapas de bits, los datos de mapa de bits no se guardan en el montón de Java, lo que a veces causa OutOfMemoryError incluso cuando el uso de la memoria del montón de Java no es tan alto. La biblioteca Fresco de Facebook ayuda con esto, colocando los datos de mapa de bits en una región especial de la memoria de Android en dispositivos pre-ART
- Mantenga pequeños mapas de bits. Los mapas de bits grandes tardan más en decodificarse y ocupan más memoria
- Siga bloqueando las llamadas del hilo principal, como iOS, esto hará que la aplicación se vea lenta si no lo hace (solo tiene 16 ms para procesar cada fotograma si desea una experiencia de usuario fluida, use AsyncTask, por ejemplo). ¡Solo actualice la interfaz de usuario en el hilo principal! En Android, una tarea de larga ejecución en el subproceso principal también puede causar un ANR (la aplicación no responde)