Ver Mensaje Individual
  #8  
Antiguo 25-07-2017
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Cita:
Empezado por jhonalone Ver Mensaje
Gracias, Casimiro;

Me han quedado algunas cosas claras:
1.- Que Android (antes no, ahora si) en las nuevas versiones, elimina las aplicaciones en segundo plano que (con sus criterios) no interesan a sus fines.
Hombre, no es tanto que no interese a los fines de Android: lo que el sistema operativo hace es tratar de optimizar, entre otras cosas, el uso de la batería. Debe haber otras razones (optimizar el uso del procesador, "sensores", etc.) pero la batería es una de las más importantes: aplicaciones que estuviesen siempre activas consumirían recursos acaso innecesarios. Lo que el sistema trata de determinar es qué aplicación requiere permanecer activa, por cuánto tiempo, etc., etc.

Cita:
Empezado por jhonalone Ver Mensaje
2.- Que no sabemos los criterios que utiliza para eliminarlas.
Yo creo que esto debe estar documentado en algún lado. Si bien no todos los criterios pormenorizados, al menos un detalle de los mismos, así como indicaciones para los desarrolladores. Lamento no poder enlazar a ningún sitio ahora mismo, pero, creo yo que debe ser así.

Cita:
Empezado por jhonalone Ver Mensaje
3.- Que debe haber una forma e evitarlo, que no conocemos.
No se trata de evitarlo: es el "ciclo de vida" de las aplicaciones, es algo que se hace para mejorar la experiencia del usuario, para que la batería no dure "un suspiro", por ejemplo, sino que dure lo máximo posible. Por eso no se trata de evitarlo, sino de lidiar con ello, de tenerlo en cuenta. Por ejemplo, respondiendo a un mensaje tuyo en otro hilo, no es que debamos o sea menester guardar el estado de toda nuestra aplicación, y, después recuperar dicho estado "completamente". Esto, seguramente, no tiene sentido.

Más bien hemos de ponernos en el caso de que un usuario esté rellenando algún formulario de nuestra aplicación, y, de repente, pase a otra aplicación, por ejemplo, porque le llaman por teléfono. Lo que acaso debemos guardar nosotros (si lo consideramos necesario, y, por favorecer al usuario) son los datos del formulario en cuestión, lo que ya hubiese escrito el usuario, de modo que, cuando vuelva a reactivar la aplicación, si es necesario (si se desactivó antes) volver a rellenar los datos del formulario, para que el usuario no tenga que escribirlos de nuevo.

Pero no se trata de guardar más allá de eso... claro que dependerá de la aplicación, pero, lo que quiero decir es que no se trata de guardar "todo" lo de nuestra aplicación, para recuperarlo después. Nuestra aplicación tendrá un "ciclo de vida", que debemos controlar, pero, no hay que llegar a esos extremos. Un juego, por ejemplo, podrá guardar la partida en curso, si se quiere, pero, no necesitará ir más allá... podrá dar al usuario la opción de lanzar de nuevo la partida "cortada", o bien hacerlo de forma automática, pero, no tiene porqué haber guardado nada más que eso.

Cita:
Empezado por jhonalone Ver Mensaje
4.- Que, tal y como dice dec, es posible que el componente "Websocket" esté incluído en sus criterios.
No es tanto el componente Websocket, sino la conexión que se establece a través de dicho componente. Tengo que decir que yo hablo de una aplicación en la que no uso Delphi... de modo que lo del Websocket lo dije a modo de ejemplo. En efecto, este componente permite establecer, y, más importante para lo que nos ocupa, mantener una conexión abierta con un servidor. En efecto, esto puede "descubrirse", el sistema lo sabe, y, por lo tanto da un poco más de coba a nuestra aplicación, por decirlo así.

Cita:
Empezado por jhonalone Ver Mensaje
5.- Que la calculadora no se borra. Vamos conserva los datos después de volverla a primer plano.
Puede que los recupere: esto se puede hacer de forma transparente al usuario. No sé exactamente en el caso de la calculadora, pero, después de que nuestra aplicación se "reinicie" podemos llevar al usuario a la vista o formulario en que estuviese antes, rellener los datos de un posible formulario, etc. Todo transparente para el usuario.

Cita:
Empezado por jhonalone Ver Mensaje
6.- Que el programa reloj conserva también los datos.
Tampoco sé muy bien si estas aplicaciones que acompañan al sistema operativo tienen ya algún tipo de "prioridad" especial, o, tal vez, acaso, que su "reinicio" no sea exactamente igual que en el caso de las aplicaciones Delphi, es decir, que, aunque se reinicien, el proceso es aún más transparente: no se muestra una posible "splash screen" de nuevo, etc. De modo que a nosotros nos parece que estas aplicaciones están funcionando en "background", pero, en realidad no sea así.

Por ejemplo, en el caso de la aplicación que desarrollo, los "reinicios" son bastante claros: porque se muestra una "splash screen". Pero esto es algo que tiene que ver con esta aplicación en concreto y con el entorno de desarrollo empleado, etc. Tal vez la calculadora y el reloj se reinicien igualmente, pero, "no se note", como si mostrasen un "splash screen" cada vez que se inician "desde cero".

Cita:
Empezado por jhonalone Ver Mensaje
7.- Otro ejemplo: he bajado de play store, para probar, un programa llamado Crucigramas que también conserva los datos.
Si hablamos de un programa de terceros y este conserva sus datos, podemos estar seguros de que el autor de dicha aplicación recupera dichos datos y los vuelve a mostrar. Insisto una vez más: no se trata de evitar que nuestra aplicación no se reinicie o no se ponga en segundo plano: esto es contraproducente para el mismo usuario y la batería del dispositivo, sin ir más lejos, se trata de adaptarse a lo que en Android se llama "el ciclo de vida" de las aplicaciones. No evitarlo, sino trabajar con ello.

Cita:
Empezado por jhonalone Ver Mensaje
Creo que de haber una forma de evitarlo y creo que no debe ser tan complicada como onSaveState.
Es que si pretendes guardar TODO el estado de tu aplicación... en efecto, tal vez sea una tarea que aparece a bote pronto complicada. Pero no es tanto lo que hay que guardar, estoy seguro. O no se trata de guardarlo todo... a no ser que la aplicación en cuestión lo requiera, cosa que sería "rara" y particular de dicha aplicación en todo caso.

Cita:
Empezado por kurono Ver Mensaje
amigo jhonalone algunas versiones de android tiene las opcion de aumentar el numero de aplicaciones que se puede tener en segundo plano verifica si tu terminal tiene esas opcionees

y para dec quisiera saber si el componente Websocket es un componente nativo o de tercero pues me llego la idea de incluirlo en las aplicaciones lo use o no ya que has dicho que las aplicaciones duran mas para cerrar
Como le he comentado al compañero arriba, hablo de una aplicación que no se desarrolla con Delphi, pero, el concepto sería el mismo: si abrimos y mantenemos abierta una conexión con un servidor, según mi experiencia (y nada más, ojo...) Android "respeta" un poco más la aplicación, justamente, porque hay una conexión establecida con el servidor: que no es algo que desde luego todas las aplicaciones necesiten.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 25-07-2017 a las 12:00:34.
Responder Con Cita