Spanish Ejecutar un servicio de forma intermitente [solucionado]

Discussion in 'Spanish Forum' started by carlos7000, Sep 29, 2018.

  1. carlos7000

    carlos7000 Active Member Licensed User

    Hola a todos.

    Deseo crear un servicio que cada 'n' segundos se conecte con un servidor y solicite información para saber si hay pedidos.

    Ya leí los tutoriales de estos links:

    Intent Filters - Intercepting SMS messages in the background
    https://www.b4x.com/android/forum/t...cepting-sms-messages-in-the-background.20103/

    Automatic Foreground Mode:
    https://www.b4x.com/android/forum/threads/automatic-foreground-mode.90546/

    Pero mi inglés es deficiente y aunque entiendo la mayoria del texto, supongo que algo no me ha quedado claro.

    Ya sé que al iniciarse la aplicación, Android automáticamente inicia los servicios en modo AutomaticForegroundMode

    También entendí que no es necesario emplear la orden StartServiceAt por que el servicio nunca finaliza, (Solo en casos raros), porque Android vuelve a correr el servicio de forma automática, en caso que el servicio se haya cerrado, por que tampoco es necesario:

    Code:
    #StartCommandReturnValue: android.app.Service.START_STICKY
    Lo unico que he entendido hasta ahora es que hay que agregar la linea Service.StopAutomaticForeground a Service_Start para poder emplear StartServiceAt.

    Aunque de esa forma el programa funciona "Bien". ¿No es absurdo hacerlo de esta forma si el servicio se esta ejecutando siempre?

    Escribí dentro de un servicio las siguientes lineas

    Code:
    Private Sub Service_Start (StartingIntent As Intent)
        
    ToastMessageShow ("RUNNING..."False)
        
    Log(">>> " & DateTime.GetSecond(DateTime.Now))
    End Sub
    Pero el mensaje "RUNNING...", solo aparece una única vez.

    A pesar de seguir las instrucciones y que el programa funciona, el Log sigue mostrando el mensaje de error

    Lo que mas me molesta es el mensaje The Starter service should never be strated from a receiver.

    [​IMG]

    ¿Entonces, como hago para ejecutar un servicio cada 'n' segundos, de forma correcta?

    Saludos
     
    Last edited: Sep 29, 2018
  2. carlos7000

    carlos7000 Active Member Licensed User

  3. Gabino A. de la Gala

    Gabino A. de la Gala Active Member Licensed User

    ¿Pero finalmente lo hiciste con un timer?

    Yo lo tengo similar a lo que tu ponías en el ejemplo inicial y me funciona:

    Lo que NO tengo son las dos lineas finales que pones en las que parece que "detienes" el servicio.
     
  4. carlos7000

    carlos7000 Active Member Licensed User

    Hola.

    El código quedo así:

    Code:
    Sub Service_Start (StartingIntent As Intent)

    .
    .
    .
    .

        
    StartServiceAt(Me, DateTime.Now + 30 * 1000True)
        
    Service.StopAutomaticForeground 'Call this when the background task completes (if there is one)
    End Sub
    Así si me funcionó.
     
  5. Xicu

    Xicu Member Licensed User

  6. carlos7000

    carlos7000 Active Member Licensed User

    creo que...

    ... hace referencia a....

    ...que es algo así como un "timer" :confused:

    (nótese las comillas).
     
  7. Xicu

    Xicu Member Licensed User

    Gracias por tu respuesta Carlos7000. A pesar de esta, me quede con la espinita de probar con un timer en el starter service y parece funciona. No lo he probado en un movil real, pero en el emulador responde correctamente

    Pero sigo teniendo mis dudas si es ortodoxo hacerlo asi, y por ello lo he planteado en el hilo del foro ingles que iniciaste en su momento, a ver si alguien lo corrobora o no

    https://www.b4x.com/android/forum/threads/execute-a-service-every-n-seconds-solved.97724/.
     

    Attached Files:

  8. carlos7000

    carlos7000 Active Member Licensed User

    También tengo la misma inquietud.

    Esperemos a ver que responden.

    Muchas gracias.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice