Spanish ¿Se puede hacer un "temporizador" que se ejecute en segundo plano?

Cho-chan

New Member
Saludos, antes de nada, quiero decir que soy un programador novato, y bueno, las clases que tomo me dejan con más dudas que respuestas.
La cuestión, nos pidieron desarrollar una aplicación, una especie de "Mascota Virtual", la cual cumpliera con varias funcionalidades, entre una de ellas, es el que se le otorgue cierto realismo a la misma, es decir:
Independientemente de si la aplicación esté o no activa, deben irse reduciendo ciertos atributos, como por ejemplo: El hambre, la diversión, el sueño, etc.
Mi duda es, nos dijeron que teníamos que ocupar un Progress Bar, el cuál será tomado de referencia para ver el estado del atributo; lo puedo hacer, funciona y disminuye en la proporción que nos pidieron (42000 milisegundos), pero sólo lo hace cuando está dentro de la aplicación, ¿Hay alguna manera posible en la cuál pueda hacer que disminuya la barra sin que esté necesariamente dentro de la aplicación?
He escuchado que se hace por medio de servicios, pero no entiendo muy bien cómo funcionan...

Función de temporizador:
Sub Timer_Tick
    If  (ProgressBar1.Progress=10) Then
        ToastMessageShow("¡Amor bajo!",False)
        ProgressBar1.Progress=ProgressBar1.Progress-10
        Else if ProgressBar1.Progress=0 Then
        Timer.Enabled=False
        Else
        ProgressBar1.Progress=ProgressBar1.Progress-10
    End If
End Sub

Esta es la función que ocupo para que vaya disminuyendo la barra de "Amor" (no estoy seguro de si es la mejor), y sí funciona, pero sólo cuando estoy dentro de la aplicación.
 

josejad

Expert
Licensed User
Longtime User
Hola Cho-Chan, como bien dice Jhonn, esto hay que hacerlo en un servicio, que se sigue ejecutando incluso sin la app activa.

Aunque es relativamente sencillo implementar un servicio, lo complicado es que el S.O. no lo destruya en algún momento. Puede que -según el fabricante de teléfono que uses- incluso tengas que añadir tu app a la "lista blanca" del S.O. para que tu teléfono no destruya tu servicio.

Para esto último, el mejor ejemplo lo tienes aquí, es la mejor forma de ejecutar un servicio que, o bien no sea destruído, o que si se destruye él mismo se vuelva a activar.

Otros hilos que necesitarás leer y comprender para tu tarea:

saludos,
 

Cho-chan

New Member
Hola Cho-Chan, como bien dice Jhonn, esto hay que hacerlo en un servicio, que se sigue ejecutando incluso sin la app activa.

Aunque es relativamente sencillo implementar un servicio, lo complicado es que el S.O. no lo destruya en algún momento. Puede que -según el fabricante de teléfono que uses- incluso tengas que añadir tu app a la "lista blanca" del S.O. para que tu teléfono no destruya tu servicio.

Para esto último, el mejor ejemplo lo tienes aquí, es la mejor forma de ejecutar un servicio que, o bien no sea destruído, o que si se destruye él mismo se vuelva a activar.

Otros hilos que necesitarás leer y comprender para tu tarea:

saludos,

Muchas gracias por la información, no sabía que si es necesario, tenía que poner la app en la lista blanca. También agradezco la información adicional que me brinda.
 
Top