Spanish [SOLUCIÓN] Tiempo de Vida de una Variable ?

Duque

Active Member
Licensed User
Longtime User
Hola amigos, alguien sabe cuanto dura una variable con el dato dado una ves lo reciba.

verán tengo una BD sqlite la cual usa una contraseña para poder abrir, esta contraseña la almaceno en una variable una ves inicio la app, pero me encuentro con la duda de cuanto tiempo tarda esta variable con el dato, la variable la tengo en un modulo de código

B4X:
Public pass as String
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

El flujo del programa es este:

Main.Process_Globals
Starter.Process_Globals ' si no lo has quitado
Otros Activity.Process_Globals
Otros ModulodeCódigo.Process_Globals -> Este seria el tuyo
Starter.Service_Create
Starter.Service:Start
Main.Globals
Main.Activity_Create
Main.Activity_Resume


Por lo tanto tu variable durará hasta que no salgas de la aplicación y mates las aplicaciones de fondo (que incluirá la tuya)

Saludos
 

Duque

Active Member
Licensed User
Longtime User
Es decir que mi variable tendrá el pass de mi BD hasta que el usuario cierre la aplicación.

Muchas gracias !
 

bgsoft

Well-Known Member
Licensed User
Longtime User
No, se mantendrá hasta que no mates tu o Android las aplicaciones en segundo plano, pero ten cuidado, al entrar seguiras teniendo ese valor e igual no te interese eso si es una contraseña. Cuenta que cuando sales el main va a pause, y cuando vuelvas a entrar volverá a entrar en Sub Activity_Create(FirstTime As Boolean) pero el FirstTime estará a false.

No se si te has mirado esto:
https://www.b4x.com/android/forum/threads/b4a-tutorial-guia-rápida-del-ciclo-de-vida-de-android.38760/

Saludos
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Puedes hacer una prueba muy facil, creas un proyecto, añadele un modulo de codigo, crea una variable global y pon un log en el resume del main con el valor de esa variable, y prueba de salir y volver a entrar, una vez sin mas, y otra cerrando todas las aplicaciones en segundo plano, y veras como se comporta. Tambien puedes poner un boton que le asigne valor y hacer lo mismo, de esa forma veras como se comporta todo

Saludos
 

Duque

Active Member
Licensed User
Longtime User
Mi preocupación es que el usuario tarde mucho en la app y android elimine el valor de la variable, que tal si uso un map, el resultado seria el mismo
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Todo lo que emplees en la aplicación en el momento que Android mate la aplicación de fondo se pierde, sea del tipo que sea, Android no mata un tipo concreto de variable, simplemente por su gestión de memoria matará las aplicaciones que tengas de fondo. Tienes dos opciones, o guardas en un fichero de texto (encriptado o no) el valor de esa variable, o creas un servicio que lo llames cada x tiempo (no mucho por que te comeras la bateria) y un servicio es poco probable que lo mate Android, aunque tambien lo hace ( https://www.b4x.com/android/forum/threads/b4a-tutorial-módulos-de-servicio.42689/ ) así que lo mas seguro es guardarlo en un simple fichero de texto que es muy facil. Puedes guardarte tambien la hora y de esa forma cuando lo leas miras cuanto tiempo ha pasado, y así si ha excedido el tiempo que creas conveniente borras la variable. A menos que lo que tu quieras es que una vez que se haya identificado lo guarde para siempre, entonces simplemente guarda la contraseña.
La llamada a leer ese fichero la puedes hacer en el Sub Activity_Create(FirstTime As Boolean) cuando FirstTime sea verdadero, de esa forma aseguras que cada vez que se inicie la aplicación desde cero leerá el fichero.

Una cosa, normalmente para que los demas sepan que la pregunta se ha solucionado y hacer el foro mas dinámico y mejor, la mayoria solemos poner [SOLUCIONADO] otros ponen resuelto, etc, esto va a gustos, pero no crees que SOLUCIÓN queda un poco ambiguo :D, no se sabe si estas pidiendo una solución a la pregunta o que, es solo una opinión mia.

Saludos
 

Carlos marin

Active Member
Licensed User
Longtime User
Hola les comparto ami me paso esto, la solución (de momento por que la verdad no e vuelto a mirar) es validar si la variable esta vacía la cargo nuevamente desde la bd, dependiendo del activity en el que este o sino lo mando al inicio
 
Top