Italian StandBY e blocco procedura ricorsiva

Discussion in 'Italian Forum' started by Mirko Melegari, Nov 28, 2017.

  1. Mirko Melegari

    Mirko Melegari Member Licensed User

    Ho realezzaso un programma di invio sms multipli. Il gestionale aziendale crea gli sms da inviare ed un telefono li invia testando ciclicamente una cartella comune.
    se interviene lo standby sul telefono perche non vi sono messaggi da inviare la procedura si ferma e non riparte piu'. ho visto che occorre startare un servizio che tenga vivo il programma, ma non so come fare.
    Qualcuno puo' aiutarmi???
    Grazie, Mirko
     
  2. sirjo66

    sirjo66 Well-Known Member Licensed User

    devi fare una cosa abbastanza precisa, oppure una cosa che può sbagliare di qualche minuto ??
     
  3. Mirko Melegari

    Mirko Melegari Member Licensed User

    anche qualche minuto, non molti
     
  4. sirjo66

    sirjo66 Well-Known Member Licensed User

    innanzitutto sul tuo progetto devi aggiungere un "Service Module",
    poi dentro agli attributi del servizio devi aggiungere:
    #StartCommandReturnValue: android.app.Service.START_STICKY

    Questo fa in modo che se il SO distrugge il tuo servizio, venga subito ricreato.
    Questo sistema ha anche il vantaggio di ridurre il consumo di batteria, ma proprio per questo non è molto preciso quando deve essere chiamato ad una determinata ora (infatti da me sbaglia di circa 2-3 minuti).

    Quando il servizio viene chiamato, fai tutto quello che devi fare, poi calcoli quando deve essere richiamato di nuovo questo servizio,
    e utilizzando il comando StartServiceAt specifichi data e ora

    Sergio
     
  5. Mirko Melegari

    Mirko Melegari Member Licensed User

    Ti ringrazio della soluzione, ma come faccio a far sì che il programma di invio sms da me realizzato rimanga attivo sempre una volta lanciato manualmente una prima volta. Io non devo attivarlo ad una data ora.
     
  6. Mirko Melegari

    Mirko Melegari Member Licensed User

    potresti mandarmi un esempio di codice relativo al servizio? Dovrei scrivere qualche cosa come:

    #Region Service Attributes
    #StartAtBoot: true
    #StartCommandReturnValue: android.app.Service.START_STICKY
    #End Region

    Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.

    End Sub

    Sub Service_Create

    End Sub

    Sub Service_Start (StartingIntent As Intent)

    End Sub

    Sub Service_Destroy

    End Sub


    *****************
    Devo scrivere qualche cosa nelle varie subs?
    grazie
     
  7. sirjo66

    sirjo66 Well-Known Member Licensed User

    Lo scrivo al volo senza provarlo per cui devi poi sistemarlo
    Code:
    Sub Service_Start(StartingIntent As Intent)

        
    Dim Adesso As Long = DateTime.Now
        
    DateTime.TimeFormat = "HH:mm:ss"
        
    Log(DateTime.Time(Adesso) & " Eseguo la procedura")

        
    ' in questo punto ci metterai tutto quello che la tua procedura deve fare
        ' ......
        ' ......

        
    ' procedura finita, ora calcolo quando fare la prossima volta la procedura, facciamo ad esempio tra 3 minuti (quindi 180 secondi)
        StartServiceAt("", Adesso + 180 * 1000True)
        
    Log("Prossima esecuzione alle " & DateTime.Time(Adesso + 180 *1000))
        
    Log("------------------------------------------------")
    End Sub
     
  8. Mirko Melegari

    Mirko Melegari Member Licensed User

    ti ringrazio per l'esempio ,Mi scuso ma forse non mi sono spiegato :
    io non devo ristartare ciclicamente la mia app , ma semplicemente quando accade che se il telefono o lo schermo va in stand-by l'app deve continuare a lavorare e non fermarsi.
     
  9. sirjo66

    sirjo66 Well-Known Member Licensed User

    infatti la procedura che ti ho indicato non serve per restartare l'app, serve per fare una procedura ogni 3 minuti, anche se il telefono va in stand-by, mi sembrava di capire che era quello che ti serviva, cioè controllare una cartella ogni tot minuti anche con il telefono in stand-by ma forse ho capito male io
     
  10. Mirko Melegari

    Mirko Melegari Member Licensed User

    No a me serve semplicemente che la procedura rimanga viva anche se il telefono va in stand-by o in pausa per qualsiasi motivo.
    attualmente ho risolto in modo barbaro lanciando prima l'app "No screen off" (downlod da googleplay )poi lancio la mia procedura MultiSMS .
    In questo modo lo schermo non va mai in stand-by e quando su una cartella condivisa con il gestionale, arrivano sms da inviare, il telefono li invia.
     
  11. sirjo66

    sirjo66 Well-Known Member Licensed User

    il test che fa il tuo programma su questa cartella condivisa per vedere se c'è un sms da inviare, ogni quanto tempo lo fa ???
     
  12. Mirko Melegari

    Mirko Melegari Member Licensed User

    Ho messo un timer tarato a un secondo. Se arriva un file con n sms disable il timer, spedisco e enabled il timer per un nuovo invio
     
  13. sirjo66

    sirjo66 Well-Known Member Licensed User

    un secondo mi sembra un po' esagerato, secondo me lo puoi impostare a 30 secondi e invece che utilizzare il timer utilizzi il servizio come ti ho fatto l'esempio, che verrà quindi chiamato ogni 30 secondi anche se va in stand-by

    l'esempio che ti avevo fatto era infatti per sostituire il timer con il Service

    comunque puoi anche usare il Service ad ogni secondo, non ci sono problemi (almeno non credo)
     
  14. Mirko Melegari

    Mirko Melegari Member Licensed User

    Non posso perché il programma manda via 1 sms ogni 5 secondi se che è il tempo minimo che fa si che il buffer del telefono non si intasi. Da gestionale possono arrivare anche liste superiori a 500 sms in un unico file ed il tempo di invio può superare anche la mezza ora. L'unica cosa che vorrei fare è impedire lo stand by e lasciare il programma così come è.
     
  15. iz0ndg

    iz0ndg Member Licensed User

  16. Mirko Melegari

    Mirko Melegari Member Licensed User

    ti ringrazio molto è esattamente quello che cercavo.
     
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