¿Cuáles son las diferencias técnicas de cómo funcionan Android e iOS internamente?

Hay muchas diferencias en muchos niveles, pero mirándolo desde una perspectiva de rendimiento y arquitectura general, aquí hay algunas observaciones aleatorias:

Consumo de energía: en general, iOS desempeña un papel más administrativo en la vida de las aplicaciones instaladas, estableciendo límites sobre cosas como la cantidad de trabajo que se puede realizar en segundo plano una vez que el usuario renunció a una aplicación, y las restricciones para acceder a servicios de gran potencia. como la conciencia de ubicación. El sistema operativo actúa como un “guardián de puerta” mucho más fuerte y, por lo tanto, es capaz (en teoría) de hacer cumplir los principios generales que disminuyen la capacidad de una aplicación individual para drenar casualmente la energía.

Gestión de la memoria: en los dispositivos móviles, los recursos a menudo están limitados, y uno de los más restringidos es la memoria. Android usa un método llamado “recolección de basura”, mientras que iOS usa un enfoque más proactivo llamado recuento de referencias. La memoria se asigna a los objetos a medida que se necesitan. En iOS, cuando un objeto ya no es necesario, su memoria se abandona de forma explícita e inmediata y, por lo tanto, está disponible para ser utilizado por otro objeto de inmediato. En Android, los objetos que ya no se necesitan simplemente se dejan de lado. Un “recolector de basura”, que utiliza ciclos informáticos y recursos propios, tiene la responsabilidad de buscar objetos no utilizados y “limpiarlos” después de ellos, devolviendo la memoria en algún punto indeterminado después de que el objeto ya no sea necesario. El enfoque de Android es menos eficiente pero más fácil de implementar por el programador.

Rendimiento de animación: iOS se beneficia del acoplamiento de su hardware y su software de muchas maneras, pero tradicionalmente una de las más grandes ha sido la capacidad de realizar animaciones y dibujar con aceleración de hardware proporcionada implícitamente. Aunque las versiones más recientes de Android admiten la aceleración de hardware cuando ese hardware está disponible, esto es solo en ciertas versiones del sistema operativo en cierto hardware y, por lo tanto, un atributo o característica menos consistente de Android.

iOS está diseñado desde cero para ser fácil de usar para el desarrollador. Apple desarrolla API muy sólidas para facilitar las tareas y aprovechar el poder de un hardware muy específico para garantizar la máxima facilidad de uso y un alto rendimiento. La personalización se limita para garantizar que siempre se cumplan ciertas pautas para mantener un statu quo. Diseñar para hardware que no sea de Apple es extremadamente difícil, si no imposible. Diseñar periféricos de hardware para iOS es difícil porque deben cumplir estándares muy estrictos.

Android está diseñado desde cero para ser fácil de implementar para el fabricante del hardware. Es MUY flexible con una gran variedad de componentes de hardware y le permite ejecutarse en miles de dispositivos muy diferentes. Proporciona el marco básico y luego pide a los fabricantes y desarrolladores de hardware que lo adapten a sus necesidades. Esto ofrece una gran flexibilidad, pero carece de muchas herramientas excelentes, como el acceso para aprovechar la GPU para la codificación de video, la comunicación Bluetooth de iOS a Android, etc., ya que no diseña requisitos para que los fabricantes de hardware cumplan estos objetivos y, por lo tanto, no diseña API para apoyarlos Esto hace la vida más difícil para el desarrollador.

También vale la pena señalar que las aplicaciones de iOS están escritas en C, se compilan para producir código de máquina ARM nativo, donde las aplicaciones de Androïd son códigos de bytes Java que se ejecutan dentro de una máquina virtual.

Supongo que el último es (ligeramente) menos efectivo que el primero.