Ver la Versión Completa : Android multitasking vs Iphone 4?
timonoj
25/06/10, 04:25:18
Buenas...Quería preguntar por aquí a ver si alguien que sepa me puede aclarar. Ahora que ha salido el iphone 4, le están cayendo de todos lados, porque oficialmente lo que han sacado no es del todo multitasking. Realmente pausa las aplicaciones y luego las recupera, y para aplicaciones concretas, se pueden mantener algunos hilos ejecutándose a pesar de no estar en primer plano. Y le está lloviendo de todo a apple por esto, porque oficialmente no tienes la aplicación en segundo plano corriendo.
Ojo, no soy en absoluto defensor de apple (y lo de la antena no apta para zurdos me parece una cagada monstruosa). Pero...No hace android exactamente lo mismo? Cuando quitas una aplicación de primer plano, hace un savestate de todos los datos, como si la hubieras chapado, pero la deja en ram pausada. Si el SO finalmente determina que lleva mucho tiempo sin usarse y no hace falta, hace un taskkill a lo bruto y fuera. Si se quiere recuperar, se reinicia la aplicación, carga el savestate, y la recuperas donde estaba. Si hay aplicaciones que han de correr en segundo plano, se permiten llamadas API especiales para tenerlas vivas (música, programas de mensajería, etc).
Y digo yo...No es esto LO MISMO que lo que han puesto en el iphone? Por qué al iphone se le critica tanto, poniendo de ejemplo android? Mi no entiendo.
yo no soy ni defensor ni detractor de ninguno, y sobre el tema no tengo ni flowers. solo se que (con el nexus) si pongo a bajar algo de megaupload, y dejo la cuenta atras, y me voy al google maps, la cuenta se "congela" hasta que vuelvo. si bien inicio la descarga, esta si que va mientras uso el gps y recibo emails y escucho musica.
yo no se que criterios sigue para hacer segun que, segun cuando.
pmaicas
26/06/10, 08:56:07
Para entender lo que es la multitarea hay que ser programador, creo yo. De aple no se nada, pero te puedo decir cómo funciona android, que es multitarea sin ningún "pero", excepto por el hecho de que cuando falta memoria, android puede forzar el cierre de una aplicacion (cosa que windows no haría, por ejemplo)
Eso que dices que android hace un 'savestate' no es exacto, eso se se hace en objetos 'activity' es decir en objetos del tipo 'ventana', cuando la ventana no se ve, sencillamente se pausa y cuando se ve se restaura. Si hay otros objetos creados, no se ven afectados por esa pausa, si hay threads corriendo, mucho menos. Y por supuesto si quisieras una aplicacion sin ventana crearías un servicio en vez de una actividad, para tenerlo siempre en segundo plano corriendo, aparte de todos los threads que quieras crear.
timonoj
26/06/10, 09:07:53
Ahh, vale, entonces lo que se congela es sólo la ventana? Eso es lo que quería saber. Y sí, soy programador, aunque no conozco ni la plataforma android ni la de apple, es por eso que me interesaba el asunto.
Pero había oído que android cuando tiene necesidad de ram, hace taskkills sin preocuparse del tema, porque ya estaban los datos guardados en el momento que perdía el focus...Tendré que mirar dónde lo vi :D
pmaicas
26/06/10, 16:49:15
Ahh, vale, entonces lo que se congela es sólo la ventana? Eso es lo que quería saber. Y sí, soy programador, aunque no conozco ni la plataforma android ni la de apple, es por eso que me interesaba el asunto.
Pero había oído que android cuando tiene necesidad de ram, hace taskkills sin preocuparse del tema, porque ya estaban los datos guardados en el momento que perdía el focus...Tendré que mirar dónde lo vi :D
Pues entonces te lo explico con más detalle:
En android a las ventanas les llaman 'actividades', son un objeto que deriva de Activity. Ese objeto pasa por una serie de estados según esté en primer plano, o no, donde se generan una serie de eventos que el programador puede interceptar y operar en consecuencia. Y sí, si falta memoria android destruye las actividades que están en segundo plano. Si no tienes un servicio corriendo eso hace que la aplicación entera se descargue de memoria.
De hecho es así como terminan los programas. Según se va llenando la memoria android se ocupa de eliminar ventanas y aplicaciones (sin servicios) que están en segundo plano.
Es decir que si quieres que algo este siempre corriendo debes crear un servicio (que es otro objeto que deriva de Service).
Ademas puedes registrar la aplicación para recibir ciertos eventos, aunque no tengas siquiera un servicio corriendo.
aún más: cuando un programa tiene alguna tarea larga que hacer, se recomienda ejecutarla en un thread aparte del principal, para evitar que el interface gráfico quede congelado. Es decir que además de tener múltiples tareas (servicios) corriendo, tambien cada aplicacion puede tener múltiples threads.
pmaicas
26/06/10, 16:53:52
Ahora pregunto yo: ¿ qué es eso del kernel con soporte para multitarea ?
En los foros dedicados al ROM's están a vueltas con poner o no poner un kernel que soporte multitarea, como si fuera una novedad o un hack reciente. Pero si ya se está usando un kernel de linux que a todas luces soporta multitarea, con múltiples programas en ejecución y cada uno con múltiples threads ¿ de qué hablan pues cuando hablan de multitarea ?
La única respuesta que se me ocurre es que se refieran a soportar microprocesadores de varios núcleos, pero también lo dudo porque entonces ¿para qué usar ese kernel en una magic que solo tiene un núcleo ?
Si alguien sabe algo que responda, po favó.
timonoj
27/06/10, 11:52:40
Primera noticia que oigo. Puedes poner algún enlace?
gonfeijum
27/06/10, 16:56:49
¿habeis visto este artículo?:
iOS4 vs Android 2.2 Froyo: Tabla Comparativa, ¿Con cuál te quedas?
en
http://www.xatakamovil.com/sistemas-operativos/ios4-vs-android-22-froyo-tabla-comparativa-con-cual-te-quedas
no se si os resultará útil....
pmaicas
27/06/10, 18:45:10
Primera noticia que oigo. Puedes poner algún enlace?
Aqui mismo, en los foros de ROMs para magic, por ejemplo. Pero ya lo he preguntado allí y me lo han explicado, se trata de un nombre pomposo que le han puesto a un kernel al que le han modificado algunas constantes, que hace que el kernel tienda a mantener mas aplicaciones en memoria y tarde más en destruirlas cuando le falta memoria (a riesgo de sobrecargar la memoria, yo me fiaría mas del kernel normal).
vBulletin® v3.8.1, Copyright ©2000-2026, Jelsoft Enterprises Ltd.