Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   Aplicación se reinicia al traerla a primer plano (https://www.clubdelphi.com/foros/showthread.php?t=92099)

jhonalone 25-07-2017 22:41:24

1 Archivos Adjunto(s)
Bueno, Casimiro.

Los "cuadrados superpuestos" son una representación de dos ventanas en cascada, creo que lo he comentado antes. Hablo de los terminales Samsung que son los que yo uso. En la foto puedes ver los sensores a los que me refiero.

Los de la foto de arriba son de un Motorola, que están dentro de la pantalla del terminal y al que me refiero es el cuadrado de la derecha, que hace la misma función que los dos cuadraditos que aparecen a la izquierda de la foto inferior que corresponde a un terminal Samsung

Saludos.

Archivo Adjunto 3588

Casimiro Notevi 25-07-2017 22:44:07

Ok, está claro.

jhonalone 25-07-2017 22:50:39

Hola.

Tengo que deciros que no he comprobado el problema en el Motorola, pues es de un amigo de mi hijo que estaba casualmente en casa.

Saludos.

Casimiro Notevi 25-07-2017 22:57:23

Entonces, para resumir:
Cita:

Empezado por jhonalone (Mensaje 519639)
Si seleccionas cualquier aplicación que no haya sido generada con Delphi, la retomas donde la dejaste.
Pero si eliges una que ha sido generada por Delphi... ¡¡SORPRESA!! La aplicación se reinicia y arranca desde el principio, como si la hubieras llamado pulsando su icono.

Es que eso no tiene nada que ver con delphi, eso es la forma de funcionamiento normal de todos los programas android.
Cuando "duermes" un programa y lo vuelves a "despertar" (lo que tú llamas "reiniciar") vuelve a empezar de nuevo, se pierden todos los valores en las variables, etc.
Y es exactamente el mismo comportamiento cuando giras la pantalla.

Ahora bien, todo eso es controlable, tú puedes saber si es la primera vez que inicia el programa o si es que está "despertando" tras haber "dormido" (o se ha girado la pantalla) y depende de ti controlarlo guardando los datos que necesites y volviendo a restaurarlos.

No sé cómo es el mecanismo ese en delphi porque para android utilizo otra cosa (no existía delphi para android cuando empecé a programar android), pero seguro que debe poderse hacer lo que necesitas, debe ser algo básico, aunque parezca complicado, como todo lo que no se conoce.

No puedo ayudar mucho en eso porque no tengo ningún delphi moderno, pero intentaré ayudarte en lo que pueda.

jhonalone 25-07-2017 23:46:42

Gracias por el interés que te estás tomando Casimiro.

Estoy convencido de que no es un problema sólo de Delphi. He comprobado que otros programas tienen el mismo comportamiento y no son de Delphi.

Al girar la pantalla no ocurre el mismo problema, al menos otros programas que he comprobado, aún siendo desarrollados en Delphi. Ni se resetean ni pierden la información de la pantalla.

Buenas noches. Mañana seguiremos.

Un saludo.

jhonalone 27-07-2017 11:31:24

Hola a todos.

Sigo trabajando en el asunto.
Ayer minimizé algunas aplicaciones (entre ellas la mía) y para mi sorpresa esta mañana al reactivarlas mantenían sus misma pantalla y posición, es decir: no se reiniciaban (reseteaban).

No me preguntéis porqué... el dispositivo siegue siendo el mismo y yo no he cambiado ningún ajuste.

Estoy probando esta mañana y... unas veces se reinician las App's y... otras no. A ver si consigo averiguar el comportamiento (a primera vista errático) del "lifecycle" de las App's en Android.

Estoy haciendo pruebas con un controlador de eventos que me sugirió TOPX en otro hilo. Pero creo que aunque controlemos el evento, lo más difícil será restituir los valores que tienen en ése momento todas las variables globales de la App y restituir la pantalla en la que se encontraba cuando perdió el foco. Sin olvidarnos de las comprobaciones que hace el programa al ejecutarse la primera vez...

Sigo pensando, que "matar" las App's arbitrariamente, es una solución irrespetuosa con el usuario por parte de Android. No quiero decir con esto que no haya que controlar la memoria y el espacio del dispositivo por seguridad de uso. Pero estaréis conmigo en que, llegado a un límite de recursos, sería mucho mas elegante y respetuso avisar al usuario y dejarle elegir cuál o cuáles App's desea cerrar. Digo yo. De hecho, el sistema ya te avisa cuando te queda poca batería.

Imagínate que estás en un editor de texto y tienes una parte escrita y necesitas ponerlo en "segundo plano" para hacer una llamada. Como otras veces ya lo habías dejado en segundo plano y lo has recuperado intacto, vuelves a hacer lo mismo, sin guardarlo. Pero en ése momento Android decide "matar" la aplicación del editor. Cuando intentas recuperarlo, ves que se reinicia el editor, vuelve a su posición de cuando le ejecutas por primera vez, y has perdido el trabajo. Si, claro, aprendes a no volver a minimizarlo sin salvar. Pero te acuerdas del padre de Android (si tiene) y el mal ya está hecho.

Creo que todos sabéis, por experiencia que, los errores (problemas) que aparecen al desarrollar un programa y que ocurren unas veces sí y otras no, son los peores de resolver.

Si consigo descubrir o solucionar algo, o si se me ocurre otra cosa os tendré al corriente.

Perdonar mi pesadez, pero creo que el tema tiene bastante importancia (o...¿quizá sólo es importante para mi?...)

Bueno. Saludos a todos.

Casimiro Notevi 27-07-2017 11:58:27

Cita:

Empezado por jhonalone (Mensaje 519791)
Imagínate que estás en un editor de texto y tienes una parte escrita y necesitas ponerlo en "segundo plano" para hacer una llamada. Como otras veces ya lo habías dejado en segundo plano y lo has recuperado intacto, vuelves a hacer lo mismo, sin guardarlo. Pero en ése momento Android decide "matar" la aplicación del editor. Cuando intentas recuperarlo, ves que se reinicia el editor, vuelve a su posición de cuando le ejecutas por primera vez, y has perdido el trabajo. Si, claro, aprendes a no volver a minimizarlo sin salvar. Pero te acuerdas del padre de Android (si tiene) y el mal ya está hecho.
Creo que todos sabéis, por experiencia que, los errores (problemas) que aparecen al desarrollar un programa y que ocurren unas veces sí y otras no, son los peores de resolver.
Si consigo descubrir o solucionar algo, o si se me ocurre otra cosa os tendré al corriente.
Perdonar mi pesadez, pero creo que el tema tiene bastante importancia (o...¿quizá sólo es importante para mi?...)
Bueno. Saludos a todos.

De toda la vida, con todos los sistemas, si no guardas lo que estás haciendo, te arriesgas a perderlo. No es nada nuevo ni "problema" exclusivo con android.
Cita:

Empezado por jhonalone (Mensaje 519791)
Perdonar mi pesadez, pero creo que el tema tiene bastante importancia (o...¿quizá sólo es importante para mi?...)

Creo, es mi opinión, que le estás dando demasiado importancia, a fin de cuentas es un teléfono con muuuuuchos añadidos, pero es un teléfono.
Puedes plantearte el problema de otra forma, por ejemplo, estás dando de alta un cliente y necesitas hacer una llamada, entonces cuando vas a salir (segundo plano, aparcar, dormir, llámalo como quieras) guardas los datos que se puedan perder y nada más, luego cuando inicias el programa de nuevo no habrás perdido nada, salvo que no estarás exactamente en la pantalla que estabas. No es nada trágico. Al menos, yo lo veo así.

jhonalone 27-07-2017 12:29:33

Cita:

Empezado por Casimiro Notevi (Mensaje 519792)
Puedes plantearte el problema de otra forma, por ejemplo, estás dando de alta un cliente y necesitas hacer una llamada, entonces cuando vas a salir (segundo plano, aparcar, dormir, llámalo como quieras) guardas los datos que se puedan perder y nada más, luego cuando inicias el programa de nuevo no habrás perdido nada, salvo que no estarás exactamente en la pantalla que estabas. No es nada trágico. Al menos, yo lo veo así.

Bueno... visto así... tengo que darte la razón.

Pero no es una bonita imagen para un usuario.

Un saludo.

jhonalone 28-07-2017 19:24:21

Hola a todos.

Investigando un poco, he visto que hay bastante gente molesta por este asunto, que yo pensaba que sería una obsesión mía. Podéis verlo aquí.

Saludos a todos.

Casimiro Notevi 28-07-2017 20:53:30

Bueno, es una persona y no hay nada concluyente, algunos le aconsejan algunas cosas distintas, no hay nada que aclare realmente nada.

jhonalone 29-07-2017 01:40:15

Hola Casimiro.

El link es una búsqueda. No es solo una persona. Hay varios links en la búsqueda. y te garantizo, que he visto algunas colecciones de preocupados más. Esto que pongo es un botón de muestra, si quieres, pongo otros cuantos links más, correspondientes a búsquedas en distintos idiomas.
Lo más preocupante es que "no hay nada concluyente". Lo que nos lleva a la dictadura de Android. Lo que significa que "yo mando". Si quieres como si no. O sea: un desprecio total a los usuarios. Lo mires como quieras. Hay maneras mucho más elegantes de resolver el problema de los recursos. (Personalmente, estoy seguro de que no es un problema de recursos, pues terminales con recursos sobrados reaccionan igual). Defender a Android en este aspecto, creo que es luchar contra corriente.
Saludos.

Casimiro Notevi 29-07-2017 11:24:58

Ya, si te entiendo, pero es que una persona (o unas pocas, o muchas personas) que se quejen de algo, no quiere decir que sea un fallo (será por quejas, habría que tirar a la basura todo: windows, android, linux, ios, delphi, visual studio, msoffice, etc.) porque en todos los casos hay miles de personas que se quejan de problemas.

En este caso, el fabricante de android ha decidido hacer algo que a unos les parecerá mal y a otros no, pero es así y no se puede hablar de "dictadura" de google, porque entonces imagina lo que podríamos hablar de la "dictadura" de windows o de cualquier otro.
Simplemente es así y hay que resolver la situación con lo que hay.
Esa es mi opinión.
Y por supuesto, yo no defiendo a android, más de una vez he dicho que es una mierda, aquí mismo en los foros. Lo mismo he dicho de windows muchas veces también :D

jhonalone 30-07-2017 14:00:57

Hola Casimiro.

Aún dándote la razón sigo pensando que es una forma de hacer las cosas poco respetuosa con el usuario.

Ahora que hablas de windows, es, realmente, otra dictadura, tan o más dura que la de Android(Google)
Te cuento una experiencia mía de hace un poco mas de un mes.

Tengo W10 en el portátil y hace un poco más de un mes recibo un mensaje de ésos que te asustan de Windows, que tengo que realizar una actualización importante. Bueno, paso del asunto las dos o tres primeras veces. Como se ponía pesado, y prometía que no se perdería mi información, accedo a realizar la actualización. Más de dos o tres horas haciendo una reinstalación completa del sistema.

Cuando termina la instalación, observo que me ha devuelto el tamaño de todos los textos y gráficos al tamaño original, pequeñito.

Yo soy un poco miope y había puesto el tamaño de los iconos, los títulos de las ventanas, los textos un poquito más grandes, vamos para no tener que forzar la vista cuando estoy trabajando.

Bien, aunque me sentí fastidiado, digo "bueno vamos a adaptarlo a mi gusto otra vez".

Pues NO. Han desaparecido todas ésas opciones de ajustar el terminal a tus necesidades o gustos. En su lugar existe una opción general para, basándose en un porcentaje, agrandar o achicar (no sé si achicar) el tamaño general de todo lo que aparece en la pantalla.

Un fracaso total. Intenté aumentar un 4 o un 5 por ciento y parecía que las vistas se habían agrandado un poquito. Cuando abro Delphi voy a Project/Opions... y, para mi sorpresa, veo que el árbol de las opciones de la izquierda tiene unas letras del tamaño que veis más arriba y no caben en el recuadro en que están ubicadas.

Un desastre más a mi lista de tener que soportar dictadores. Porque digamos lo que digamos "...que sepas que serlo eres..." como decía el gracioso genio de Mota. Pero como dices tu "es lo que hay". Yo que soy tan meticuloso..., estas cosas me ponen de muy mal humor...

Si todavía estás a tiempo, y tenéis personalizados los tamaños de letra, no actualicéis si no queréis que os pase lo que a mí. "Cuando las barbas de tu vecino veas pelar..."

Perdón por mis lamentos, y por haberme extendido tanto.

Saludos cordiales.

Casimiro Notevi 30-07-2017 14:17:15

Te entiendo, windows es desesperante. Alguna vez he visto ese problema de las actualizaciones infinitas, desesperantes, reinicios, más actualizaciones, más reinicios, etc...
Yo tengo algunas máquinas virtuales con windows para probar proyectos, pero personalmente hace muchos años que en mis equipos solamente tengo linux.

jhonalone 30-07-2017 16:45:31

Hola, Casimiro.

Ojala yo fuera un poco más joven y valiente para cambiarme a Linux.

El problema que le veo a Linux es que su uso está muy restringido y hay muchas menos herramientas. Hablo de oídas, porque sé que existe, pero, por estos motivos, nunca me he planteado cambiarme.

No olvidemos que Windows está el 100 por cien de las casas.

Linux me parece que está reservado a entornos más relacionados con la informática y a personal más preparado. (A lo mejor lo que digo son barbaridades, fruto de mi desconocimiento)

Como no me rindo fácilmente,(soy muy persistente), si algún día encuentro una solución o un parche para evitar que Android se "coma" por su cuenta y riesgo mis aplicaciones retomaré este hilo. O si alguien encuentra la solución antes que yo, por favor, que la comparta que estoy esperando...
Saludos cordiales.

Casimiro Notevi 30-07-2017 17:48:13

Cita:

Empezado por jhonalone (Mensaje 519865)
Ojala yo fuera un poco más joven y valiente para cambiarme a Linux.

Ya sabes eso de "nunca es tarde...", y no creas que yo soy un jovencito, estoy cerca de ti, seguramente :rolleyes:
Cita:

Empezado por jhonalone (Mensaje 519865)
El problema que le veo a Linux es que su uso está muy restringido y hay muchas menos herramientas. Hablo de oídas, porque sé que existe, pero, por estos motivos, nunca me he planteado cambiarme.

¿Restringido?, el que está restringido es windows. Linux es libre, no tiene restricciones.
Cita:

Empezado por jhonalone (Mensaje 519865)
No olvidemos que Windows está el 100 por cien de las casas.

No, para nada, conozco más gente que usa linux que windows. Familiares, amigos, conocidos, vecinos, empresas... y no solo como servidor. Así que ya es menos del 100% ;)
Cita:

Empezado por jhonalone (Mensaje 519865)
Linux me parece que está reservado a entornos más relacionados con la informática y a personal más preparado. (A lo mejor lo que digo son barbaridades, fruto de mi desconocimiento)

El problema es que la mayoría de los nuevos que llegan a linux quieren hacer las cosas igual que con windows, y si no pueden o no saben hacer algo, se quejan y se frustran. Hay que tener paciencia, como en todas las cosas nuevas que hay que aprender.
No se puede pretender llevar usando windows durante los últimos 15 años y querer manejar linux igual en un par de horas, y eso es lo que quieren conseguir casi todos.
A mí, windows, me resulta extraño, complejo, enrevesado, frustrante, lento, dictatorial ;), chapuza, birria, etc.
Por supuesto que linux no es perfecto, pero no hay comparación en seguridad, agilidad, personalización, etc. comparado con windows.
Linux es distinto a windows, simplemente.
Cita:

Empezado por jhonalone (Mensaje 519865)
Como no me rindo fácilmente,(soy muy persistente), si algún día encuentro una solución o un parche para evitar que Android se "coma" por su cuenta y riesgo mis aplicaciones retomaré este hilo. O si alguien encuentra la solución antes que yo, por favor, que la comparta que estoy esperando...
Saludos cordiales.

Tal vez puedas crear un "servicio" para que siempre esté en funcionamiento. No tengo ni idea de cómo será en delphi, puede que debas buscar información sobre ello, creo que sería la solución a "tu problema" :)

AgustinOrtu 30-07-2017 19:37:58

Cita:

Pues NO. Han desaparecido todas ésas opciones de ajustar el terminal a tus necesidades o gustos. En su lugar existe una opción general para, basándose en un porcentaje, agrandar o achicar (no sé si achicar) el tamaño general de todo lo que aparece en la pantalla.

Un fracaso total. Intenté aumentar un 4 o un 5 por ciento y parecía que las vistas se habían agrandado un poquito. Cuando abro Delphi voy a Project/Opions... y, para mi sorpresa, veo que el árbol de las opciones de la izquierda tiene unas letras del tamaño que veis más arriba y no caben en el recuadro en que están ubicadas.
Eso sí no estoy errado se llama High DPI. Lo cual es una nueva API de Windows, que podes elegir si soportarla o no en tus aplicaciones. Es lo que se conoce como una aplicación High DPI aware. El IDE de Delphi no lo era, de hecho la Vcl tampoco tenía soporte para esta característica hasta hace poco. Entonces Embarcadero le habilitó el DPI al IDE y todo se fue al demonio, porque hay varios bugs en la Vcl con respecto a ese tema. Hay varios reportes en el sitio de incidencias. Por lo que no es culpa de Windows que se vea mal, sino de la Vcl


Más allá de estar de acuerdo con ustedes, te recomiendo el uso de gafas para usar el PC. Yo también soy miope y créeme que es mejor no forzar la vista ni usar parches como aumentar el tamaño de la letra

AgustinOrtu 30-07-2017 19:49:03

Te iba a sugerir que uses el SaveState, que es algo que ya comentaste en el hilo. A ver si este material te puede ayudar
https://community.embarcadero.com/bl...sing-savestate

Por lo que veo te permite grabar el form como un stream, y luego para leerlo hace eso mismo. Es un mecanismo similar a como se lee en tiempo de ejecución el recurso .dfm para recrear el form que vemos en tiempo de diseño

jhonalone 30-07-2017 22:36:45

Hola a todos.

Gracias a Casimiro y a Agustín por vuestro interés.

Casimiro. Me parece muy interesante tu idea. Ya la había estado barajando y buscando información en internet y tengo algunos proyectos en la cabeza. Pero ahora estoy enfrascado en una modificación de seguridad del programa y las tengo aparcadas. No olvidadas ni desechadas.

Agustín. He estado visitando el link que me dejaste y me he descargado el proyecto de prueba. Todavía no lo he probado, por la misma razón. En principio parece interesante, pero sospecho que, como comenté más arriba, el problema de SaveState va a seguir siendo el mismo: puedes salvar la posición del programa, pero lo realmente complicado son los valores que llevan todas las variables globales y que pueden haber sido cambiados. Si no salvas estos valores y los recuperas, el programa se descolocará. Mi programa en concreto, necesita de ésas variables globales para su correcto funcionamiento. Con respecto a usar gafas, las llevo desde los 6 años y tengo 65, (7 dioptrías en un ojo y 8 en el otro). Os lo cuento para que nos vayamos conociendo.

Seguiré peleando... y os contaré. "¡En peores plazas he lidiado...!, " (como dijo aquél).

Saludos cordiales.

Casimiro Notevi 30-07-2017 22:53:17

Todavía falta mucho para la jubilación ;)


La franja horaria es GMT +2. Ahora son las 13:37:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi