Uno de los puntos que innegablemente tenemos que admitir en pos de iOS es el apartado visual y de sensación de fluidez, donde resalta especialmente por su rapidez a la hora de sacar a la luz todo el potencial de unas aplicaciones con un apartado visual muy cuidado, sin embargo, esas mismas aplicaciones, ejecutadas en Android en unos terminales de similares características, no dan tanto resultado.
Muchos nos podemos quejar de las empresas, de los desarrolladores que no cuidan una línea de estilo conjunta para todas sus aplicaciones intentando que no sean inguales. Muchos nos hemos estado preguntando por qué si tienen un código prácticamente idéntico en ambas versiones y si se tienen terminales con capacidades idénticas en iOS se ve más fluído que en Android. Pero por fin nos encontramos una respuesta, y para gozo de muchos, no tiene que ver con las aplicaciones en sí.
La respuesta viene gracias al Google+ de uno de los más recientes ingenieros de Google, Andrew Munn, que ha decidido dar explicaciones de por qué esta aparente discriminación a Android, que resulta no ser tal.
No son por pausas GC. Tampoco es porque Android ejecute bytecode y porque iOS en cambio haga lo propio código nativo. La causa es que en iOS toda interfaz se procesa en unos procesos dedicados las interfaces con una alta prioridad a tiempo real que ocurre cuando se paran algunas acciones. Sin embargo Android ejecuta al estilo de un ordenador tradicional, donde el modelo de renderización ocurre en el proceso principal con una prioridad normal, causando que todo parezca menos fluido
Por ejemplo, coged un iPad o iPhones y ejecutad Safari y cargad una página web compleja como puede ser Facebook. A mitad de la carga pulsad la pantalla y moveos por ella. Se parará porque está constantemente renderizando a tiempo real y parará hasta que dejéis de pulsar la pantalla
Sin embargo, si usáis un terminal Android y cargáis la misma página, a la par que os movéis se irá cargando tanto la interfaz como el contenido, proceso para el cual los terminales con doble núcleo vienen a la perfección
La explicación, más compleja que el resumen que hemos hecho, incluye diversos factores como la aceleración de hardware, la optimización del código y las prioridades a la hora de procesar, pero nos explica el problema base de una de las preguntas que más se hacen en la guerra ente Android e iOS.
En un comentario hecho por Ricardo Galli, explica más a fondo el sistema de los shedulers
El problema de la latencia en Android es fundamentalmente un problema del scheduler. Android funciona mucho mejor con el "multitask" (en realidad "multiprogramación") porque es un Linux y no han tocado prácticamente la gestión de procesos. Para arreglar este problema sólo tienen que mejorar el scheduler. Seguramente están trabajando en ello, y de hecho se ha mejorado mucho.
El otro problema que tiene Android es que cada proceso es una máquina virtual de Java separada al que han optimizado haciendo que se comparta la memoria de las librerías comunes (como hace naturalmente el Linux/UNIX) y código muy optimizado.
Los programas en Android están en ese código intermedio que es interpretado por la máquina vitual, en cambio en iOS es nativo del procesador (que da ventajas de velocidad, pero desventajas de portabilidad y diversidad, lo que solucionan con un sólo tipo de hardware). Seguramente hay cosas que se pueden mejorar, pero esta desventaja es cada vez menor con la ampliación de velocidad de procesadores, y sobre todo de caché.
Los schedulers no son una ciencia exacta, es algo bastante quisquilloso, con montón de "casos exremos" (corner cases) al que ir detectactando y agregando heurísticas que se aprenden con la experiencia.
Es más que probable que el problema desaparezca (por tres razones fundamentalas, las mejoras en el scheduler, la gestión de la máquina vrtuale de Java y la mejora del hardware), lo que no se puede decir, a estas alturas, es que siempre será así, y que es un problema de diseño original
Ver 64 comentarios
64 comentarios
ragnarbm
Bueno, mas o menos es la explicación, e cuanto interactuas con la interfaz el teléfono deja de funcionar para dedicarse casi exclusivamente a que el render y la acción sea suave y fluída.
Si por ejemplo, la aplicación está haciendo una serie de cálculos y mientras esto pasa te desplazas por una pantalla de datos para ir viendo los resultados, simplemente dejará de calcular hasta que lo dejes tranquilo. Vamos que pone en pausa todos los proceso menos los relacionados con la pantalla.
¿Va por ahí la cosa?
mtejedorfernandez
¿Cuánto terminales distintos soportan iOS? ... Nada más que añadir señoría.
Escapology
El problema es la forma de como se ejecuta el proceso de dibujado. Con Android 4.0 parece que va todo más fluido gracias a la aceleración gráfica para todas las aplicaciones, pero parece que aun Android tiene que hacer un par de modificaciones para evitar todos los pequeños parones para conseguir la fluidez que consiguen iOS y WP7.
Lo bueno de esto es que el equipo de Android reconoce cuales son los problemas del sistema operativo y parece que están trabajando en ello para que la fluidez de Android no tenga nada que envidiar a los de la competencia.
También gran parte del problema de la fluidez lo tienen los fabricantes que optimizan mal a Android, ya que yo he visto que mi Nexus One que va más fluido que algunos móviles más potentes, o el Motorola Xoom va mucho más fluido que el Samsung Galaxy Tab 10.1 cuando ambos tienen el mismo hardware. Y lo mismo con las aplicaciones, ya que he visto aplicaciones que en actualizaciones se hacían más fluidas.
Jorge Farid
Por fin se abrió la caja de pandora!
Cristian
Como dicen en otros comentarios, la Fluidez de Android depende de en el terminal en el que la pruebes. Para mi, los mejores terminales en cuanto a fluidez son los Nexus, las HTC con Sense y Algunos Samsung como el Ace o el SII. Y, la verdad, el método para dar sensación de fluidez en iOS me parece un engaño, porque tu te piensas que tu iPhone va muy fluido porque es muy bueno y funciona muy bien y, sin embargo, todo esto se debe a que cuando tu tocas la pantalla, lo que se esté haciendo se pausa solo para que no haya ni un tirón y tu pienses "¡Que bonito es mi iPhone!". Y ahora vienen los amantes del iPhone a decir que, aun así, su móvil es el mejor y el resto son del paleolítico, como siempre. La verdad, entre que por una parte la gente se queja y quiere que Google haga milagros para que Android sea mejor que iOS visualmente, y que por otra pare vienen los que tienen un iPhone solo para restregar lo bien que va su móvil, esto se convierte en una guerra sin sentido. ¿Tanto nos cuesta hablar de Android sin compararlo con iOS o Windows Phone?
Por cierto, yo tengo una HTC Legend (si, esa que es tan inferior en Hardware al iPhone) y todas las aplicaciones nativas van de maravilla, sin tirones ni nada :).
caku
el problema de fluided tambien viene de que las aplicaciones se procuran crear para la mayor cantidad de moviles android posibles,para ios son echas esclusivamente para un telefono,es como un traje estandar y un traje a medida,siempre te quedara mejor el echo para ti
n123
con cada version nueva de android esto mejora,cada mejora de hardware en android es una mejora sustancial en fluidez y tiempos de carga...en apple no se notan ni las nuevas versiones,ni las mejoras de hardware,ni siquiera cargar las cosas tan rapido como android,ya con mi galaxy nexus me paso por la piedra al 4S cargando webs.
vgs1983
Si no me equivoco MAC OS X funciona igual, dando prioridad a los procesos que tiene en primer plano. La verdad es que aunque es evidente que es más fluido que cualquier Android, independientemente de su hardware, no quiere decir que sea más rápido. Al final su rendimiento gráfico tiene que ver con su chip gráfico, marca de la casa, y con la integración del código con el hardware. Yo creo que obtener los resultados del iPhone es una tares muy difícil para todo aquel que pretende usar un hardware distinto con el mismo software, se nota mucho en los nexus de Google, que siempre tienen más fluidez que cualquiera de sus vecinos…
Renato
Pues espero ver una interfaz mas fluida con ICS y mas animaciones....
Samsung ha puesto algo mas de animaciones en el Note, de esta manera al cambiar la orientación de la pantalla, lo hace tipo iOS y no tan bruscamente como en el SGS2.
Se que es solo una cuestión de "quedar bonito" y que no implica en el funcionamiento, pero algo mas bonito da la impresión de ser mejor y vende mas.
Por cierto, no creo que haga falta dejar todo tirada para poner una animación en tiempo real.... con un procesador de 2 núcleos y la aceleración por hardware, pueden usar la gpu y un core para la animación del turno (algo que dura menos de un segundo) mientras que otro nucleo queda libre para los procesos.
irisandroid
Muchas gracias por la explicación! Es muy interesante ;)
djkano
PERDONAD, pero yo he cambiado un iPhone 4 (también tuve el 3gs y el edge, y tengo un ipad) por un Optimus 3D y precisamente ahora veo el iphone 4 COMO UN TERMINAL CUTRE DE GAMA BAJA comparado con mi Android. Es que TODO va más rápido, las páginas web (por complejas que sean), el sistema, todo. iPhone se atraganta cuando una web es compleja, también cada ciertos días hay que reiniciar porque se va ralentizando (aunque nunca le hayas hecho jailbreak).
Y no es por tener jailbreak, todo lo contrario. En iphone la multitarea tarda en abrirse, le puse multifl0w y se abría al instante. Lo mismo pasaba con las carpetas, sin jailbreak tienen latencia, le hice jailbreak y le puse Enhaced folders y al instante. No metía temas ni Winterboard, ni mierdas que sí ralentizan.
En cambio mi Android con animaciones y widgets por todos lados VUELA.
Usuario desactivado
Hola
Esta es mi opinión general sobre desarrollo de aplicaciones -Android o no-
Yo no soy experto en el interior del Android pero si tengo experiencia en desarrollo de java de muchos años y realmente, creo que el usar java con aplicaciones "visuales"....NO ES BUENA IDEA EN GENERAL....
Una aplicación nativa es la solución ideal. Gasta menos recursos y funciona más optimizada.
Por supuesto, Android va mejorando y optimizando, pero quedan cosas...La ingente cantidad de memoria que es necesaria para ejecutar un Tablet Android...
EL usar más recursos -más procesador, más RAM- tiene su contraprestación en el gasto de energía....La batería!!!!
En resumen, yo "voto" por hacer que Android tenga Aplicaciones nativas y no java. Es la mejor solución.
No hay mucho que discutir, Windows Phone Mango va bastante bien con 1 core y 500 MB de RAM...
La diferencia está ahí...
diegoalepc1
No entiendo xq la gente se enoja cuando se habla de los problemas de android, evidentemente el sistema aunq es muy bueno no seria nada descabellado q mejore, tomando las cosas q quizas funcionen mejor en otras plataformas...Q bobada.. Y me alegra mucho q Goggle esté trabajando y confió en ello para mejorar en sus pequeños defectos, xq queramos o no, Android esta empezando un largo camino al estrellato.. eso espero jejejeje
El evadir los problemas o defectos no es bueno, es como negar q Cristiano Ronaldo es egoista... Sabiendo q es un defecto y se puede trabajar en eso...
En fin solo espero q todo sea para mejorar
pacochote
Yo tengo un htc Desire C y para ser mononucleo va de vicio. Y encima la carga que menos aguanta son más de 48 horas. Eso sí, con juice defender, WiFi matic y un limpiador de caché automático. Se trata de buscar apps que hagan que tu android con tu hardwRe rinda en óptimcondiciones. Si optimizas funciona muy bien, y mucho más barato que iPhone.
kaken
Esta claro que mucho más merito tiene android que ios, optimizar un software para miles de dispositivos diferentes eso si tiene valor. IOS realmente me gusta mucho más en cuanto a fluidez, en cuanto a android lo intenta mejorar mediante la fuerza bruta del hardware, una técnica menos elegante pero igualmente válida.
qemi
Mira que llegamos a ser gilipollas muchas veces. Las cosas se dicen de otro modo.
barberan
vamos, que dicen misa, que los terminales Android pueden ser la ostia y tal y cual, pero las aplicaciones van peor que en una mierda mononúcleo de apple.. pues yo no me quedo más tranquilo la verdad..
alexandernst
Joder... que bien has pasado el texto citado por el traductor de Google, eh... Te has dejado las manos...