Ver Mensaje Individual
  #2  
Antiguo 24-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,

Creo que lo que describes no es un problema de Delphi, sino que, se trata del comportamiento del sistema operativo, del "ciclo de vida" de las aplicaciones en Android. En efecto, cuando una aplicación se pone en segundo plano (pasamos a hacer otra cosa con otra aplicación), es el sistema el encargado de decidir si dicha aplicación va a cerrarse o mantenerse en segundo plano, etc. Dependiendo, supongo, de no pocas variables: necesidades de la aplicación, consumo de memoria RAM, batería restante, etc., etc.

Por ejemplo, en una aplicación que estoy desarrollando actualmente, usamos un componente "Websocket", que, permanece conectado a un determinado servidor. Pues bien, desde que usamos dicho componente, he podido notar que nuestra aplicación prácticamente no se "reinicia" como tú describes, sino que puede pasar de un segundo a un primer plano "sin más". Yo achaco este comportamiento a que Android sabe que ahí hay un Websocket abierto, y que, este debería permanecer conectado el mayor tiempo posible.

Sin embargo, hay veces que aún así la aplicación se comporta exactamente como describes, pero, como digo, no es algo anormal, sino el "ciclo de vida" de las aplicaciones de Android. En Delphi debe haber eventos como "OnBackground" y "OnResume", que, nos permitan mantenernos al tanto del ciclo de vida de la aplicación: saber si esta pasa a segundo plano, si vuelve a ponerse en primer plano, etc. Atendiendo a estos eventos podremos estar preparados para "resumir" en condiciones nuestra aplicación.

Es decir, no importa si esta se "reinicia", si nosotros sabemos que "venimos" de un "segundo plano", podemos antes (cuando pasamos a dicho segundo plano) haber guardado ciertos datos, por ejemplo, posbiles campos de un formulario ya rellenados, de modo que podamos situar al usuario en la vista o formulario de la aplicación que corresponda, e, incluso rellenar "los campos" del supuesto formulario, de modo que el usuario no pierda dicha información y todo "fluya" más o menos como se espera.

En conclusión: infórmate acerca del "ciclo de vida" de las aplicaciones de Android y de cómo manejar este tipo de situaciones usando Delphi: qué eventos podemos usar, etc.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita