Spanish ¿Como se activa un timer desde otro activity?

Ingeniero Cognitivo

Active Member
Tengo un timer declarado en globals y el modulo en el activity principal y uso este codigo en otro acivity para activar el timer del activity principal pero no se activa. ¿Alguien sabe cual es el fallo?. Gracias.

Main.ProcesoBateria.Initialize("ProcesoBateria",1)
Main.ProcesoBateria.Enabled = True
 

José J. Aguilar

Expert
Licensed User
¿Para qué necesitas activar en una actividad el timer de otra actividad?
No he probado, pero prueba a usar CallSubDelayed, ya que te puede pasar que alguna vez quieras inicializar un timer de una actividad que el sistema haya destruido.

 

Ingeniero Cognitivo

Active Member
¿Para qué necesitas activar en una actividad el timer de otra actividad?
No he probado, pero prueba a usar CallSubDelayed, ya que te puede pasar que alguna vez quieras inicializar un timer de una actividad que el sistema haya destruido.

Porque a veces falla el modulo de deteccion de carga de bateria y uso el timer para asegurarme de que la aplicacion este constantemente comprobarndo si hay carga o no.
Ya he solucionado lo del timer. Lo activo desde el modulo resume.
Lo probare. Gracias.
Creo que ya se lo que hace y esta muy bien para enviar un dato, ¿pero y si necesito enviar mas de uno a otro activity?. De todas formas esa instruccion no hace lo que yo quiero, que es que el activity este constantemente comprobando si hay carga o no.
 
Last edited:

José J. Aguilar

Expert
Licensed User
Porque a veces falla el modulo de deteccion de carga de bateria
Probablemente porque la activity se destruye. Ten en cuenta que no siempre es adecuado tener varias activities, y que en una sola puedes mostrar distintas "pantallas" (bien mostrando distintos paneles, o cargando distintos layouts). Cambiar de activity supone "resumes", "creates", que se destruyan las no visibles, etc... Échale un ojo a este ejemplo
Lo adecuado para tareas que se ejecutan durante mucho tiempo, es que se ejecuten desde un servicio.

Incluso sería mejor ahora mismo que estás digamos empezando, que usaras B4XPages y te quitas de líos de resume, etc... ya que la aplicación corre en una sola activity y está corriendo incluso cuando no es visible, hasta que la destruya el sistema operativo.

¿pero y si necesito enviar mas de uno a otro activity?
Existen
CallSubDelayed2, y CallSubDelayed3. O incluso puedes pasar un array de argumentos.
 

Ingeniero Cognitivo

Active Member
Probablemente porque la activity se destruye. Ten en cuenta que no siempre es adecuado tener varias activities, y que en una sola puedes mostrar distintas "pantallas" (bien mostrando distintos paneles, o cargando distintos layouts). Cambiar de activity supone "resumes", "creates", que se destruyan las no visibles, etc... Échale un ojo a este ejemplo
Lo adecuado para tareas que se ejecutan durante mucho tiempo, es que se ejecuten desde un servicio.

Incluso sería mejor ahora mismo que estás digamos empezando, que usaras B4XPages y te quitas de líos de resume, etc... ya que la aplicación corre en una sola activity y está corriendo incluso cuando no es visible, hasta que la destruya el sistema operativo.


Existen
CallSubDelayed2, y CallSubDelayed3. O incluso puedes pasar un array de argumentos.
El activity principal es el que gestiona todo. Cuando el principal detecta que no hay corriente, se abre otro y en ese tambien tengo que incluir la misma rutina para detectar si hay corriente o no. Entonces supongo que al haber dos rutinas, alguna anula la otra pero no se cual. Por eso he decidido solucionarlo con un timer.

Eso de b4xpages no lo sabia, no sabia ni lo que era. ¿Entonces eso hace que la aplicacion funcione como en un pc?.
¿Puedo poner en ese modo el mismo codigo que tengo ahora?.
 

José J. Aguilar

Expert
Licensed User
se abre otro
Por qué necesitas abrir otra activity? Simplemente podrías mostrar otro panel o cargar otro layout y seguir en la misma activity.

y en ese tambien tengo que incluir la misma rutina
Por lo general, repetir código se considera una mala práctica. Impleméntalo en un servicio, y llama a esa rutina desde cualquier activity.

¿Has leído cual es el ciclo de vida de una actividad en Android? Pues con B4XPages se evitan las llamadas a resume, pause...
 

Ingeniero Cognitivo

Active Member
Por qué necesitas abrir otra activity? Simplemente podrías mostrar otro panel o cargar otro layout y seguir en la misma activity.


Por lo general, repetir código se considera una mala práctica. Impleméntalo en un servicio, y llama a esa rutina desde cualquier activity.

¿Has leído cual es el ciclo de vida de una actividad en Android? Pues con B4XPages se evitan las llamadas a resume, pause...

Con otro panel ¿puedo compartir variables globales y realizar tareas en segundo plano?. SI es asi, a partir de ahora usare paneles.
Hasta ahora no lo he hecho porque no sabia que ventaja tenia y no tengo tiempo para investigar alternativas, pero si tu sugerencia es mas eficaz, lo investigare para la proxima tarea.

Ya se que segun los profesionales lo hago todo mal, pero esos profesionales no han creando programas innovadores como yo. De hecho los profesionales con los que he hablado me han dicho que b4a no sirve para programar.

Probare lo del b4xpages para la proxima tarea. Gracias.
 

José J. Aguilar

Expert
Licensed User
Con otro panel ¿puedo compartir variables globales
Claro, estás dentro de la misma actividad, tus variables siguen ahí.
realizar tareas en segundo plano
Depende a lo que te refieras, si es con la actividad abierta, sí.
Si es en otra actividad o mientras la app no está visible (por ejemplo el usuario ha pulsado la tecla home, o back mientras estás en esa actividad) lo tienes que hacer con un servicio.
 

Ingeniero Cognitivo

Active Member
Claro, estás dentro de la misma actividad, tus variables siguen ahí.

Depende a lo que te refieras, si es con la actividad abierta, sí.
Si es en otra actividad o mientras la app no está visible (por ejemplo el usuario ha pulsado la tecla home, o back mientras estás en esa actividad) lo tienes que hacer con un servicio.
Lo intentare. Gracias.
 
Top