CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 4eyes81 con ben 1 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: elmegio con ben 7 Thanks ricevuti negli ultimi sette giorni
Utente del mese: bluemask con ben 43 Thanks ricevuti nell'ultimo mese

Pagina 1 di 2 12 ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 1 a 10 su 15
Discussione:

Timer bloccato durante lock screen

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Nov 2010
    Messaggi
    35

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Timer bloccato durante lock screen

    Ciao, ho un servizio che, alla fine delle operazioni da svolgere, innesca un timer che fa partire nuovamente il ciclo di lavoro; se però il telefono va in stand by, intendo in lock screen (con lo schermo nero per capirci), il timeout del timer non interviene mai, cosa che al contrario accade se il display del telefono rimane acceso.
    Qualcuno sa come mai e cosa potrei fare per risolvere il problema?

  2.  
  3. #2
    Senior Droid L'avatar di Azatoth


    Registrato dal
    Apr 2009
    Località
    Misinto (MI)
    Messaggi
    568

    Ringraziamenti
    1
    Ringraziato 38 volte in 28 Posts
    Predefinito

    Quote Originariamente inviato da Brucio82 Visualizza il messaggio
    Ciao, ho un servizio che, alla fine delle operazioni da svolgere, innesca un timer che fa partire nuovamente il ciclo di lavoro; se però il telefono va in stand by, intendo in lock screen (con lo schermo nero per capirci), il timeout del timer non interviene mai, cosa che al contrario accade se il display del telefono rimane acceso.
    Qualcuno sa come mai e cosa potrei fare per risolvere il problema?
    Usa un wakelock. Magari un Partial wakelock.

    PowerManager.PARTIAL_WAKE_LOCK

    Questo tiene la CPU on, ma schermo e tastiera off.


    Google Nexus One USA
    ROM: CyanogenMod 6.1.1 - Android 2.2.1
    Radio: 5.12.00.08
    Recovery: Clockwork

    Sviluppatore di: Swapper per utenti root | Modus Operandi

    Ecco le mie app Android

  4. #3
    Senior Droid L'avatar di Azatoth


    Registrato dal
    Apr 2009
    Località
    Misinto (MI)
    Messaggi
    568

    Ringraziamenti
    1
    Ringraziato 38 volte in 28 Posts
    Predefinito

    In aggiunta al WakeLock, da usare comunque mentre le operazioni sono in esecuzione e da eliminare quando sono complete; puoi usare AlarmManager per lanciare un intent che verrà preso in carico da un broadcast receiver che funge da gestore delle attività (e che attiverà quindi il wakelock, eseguirà le operazioni e disattiverà il wakelock attivato all'inizio) al posto del servizio.

    AlarmManager lancia l'intent anche a schermo sperto e lockato.

    AlarmManager | Android Developers

    Wake Up with the Alarm | The Androider


    Google Nexus One USA
    ROM: CyanogenMod 6.1.1 - Android 2.2.1
    Radio: 5.12.00.08
    Recovery: Clockwork

    Sviluppatore di: Swapper per utenti root | Modus Operandi

    Ecco le mie app Android

  5. #4
    Baby Droid


    Registrato dal
    Nov 2010
    Messaggi
    35

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Funziona, mi hai dato un gran bell'aiuto Azatoth! Ciao grazie di nuovo

  6. #5
    Baby Droid


    Registrato dal
    Nov 2010
    Messaggi
    35

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Non mi funziona come dovrebbe...io chiamo l'alarmmanager alla fine di un servizio, quindi fermo il servizio con stopself().
    Si innesca il broadcastreceiver dal quale vorrei far ripartire il servizio con context.startService(i), dove i è l'intent associato alla classe del servizio.
    Però non viene innescato niente e il servizio non riparte..sai mica come potrei fare?

  7. #6
    Senior Droid L'avatar di Azatoth


    Registrato dal
    Apr 2009
    Località
    Misinto (MI)
    Messaggi
    568

    Ringraziamenti
    1
    Ringraziato 38 volte in 28 Posts
    Predefinito

    Quote Originariamente inviato da Brucio82 Visualizza il messaggio
    Non mi funziona come dovrebbe...io chiamo l'alarmmanager alla fine di un servizio, quindi fermo il servizio con stopself().
    Si innesca il broadcastreceiver dal quale vorrei far ripartire il servizio con context.startService(i), dove i è l'intent associato alla classe del servizio.
    Però non viene innescato niente e il servizio non riparte..sai mica come potrei fare?
    Perchè usi un servizio?
    non ti basta un broadcast receiver?

    Togli il servizio.
    metti un broadcast receiver per ricevere il BOOT_COMPLETED.
    in questo broadcast receiver ci metti il set dell'AlarmManager.
    Questo lancierà un intent che tu avrai registrato ad un altro broadcast receiver.
    In quest'ultimo imposti il wakelock che sarà un singleton e lanci un esecuzione su un thread a parte che esegue le operazioni che oggi hai inserito nel servizio.

    Completata l'esecuzione del thread, come ultima operazione rilasci il wakelock impostato nel broadcast receiver associato all'intent lanciato dall'AlarmManager.

    Così dovrebbe funzionare.


    Google Nexus One USA
    ROM: CyanogenMod 6.1.1 - Android 2.2.1
    Radio: 5.12.00.08
    Recovery: Clockwork

    Sviluppatore di: Swapper per utenti root | Modus Operandi

    Ecco le mie app Android

  8. #7
    Baby Droid


    Registrato dal
    Nov 2010
    Messaggi
    35

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da Azatoth Visualizza il messaggio
    Perchè usi un servizio?
    non ti basta un broadcast receiver?

    Togli il servizio.
    metti un broadcast receiver per ricevere il BOOT_COMPLETED.
    in questo broadcast receiver ci metti il set dell'AlarmManager.
    Questo lancierà un intent che tu avrai registrato ad un altro broadcast receiver.
    In quest'ultimo imposti il wakelock che sarà un singleton e lanci un esecuzione su un thread a parte che esegue le operazioni che oggi hai inserito nel servizio.

    Completata l'esecuzione del thread, come ultima operazione rilasci il wakelock impostato nel broadcast receiver associato all'intent lanciato dall'AlarmManager.

    Così dovrebbe funzionare.
    Il broadcast receiver con il BOOT_COMPLETED ce l'ho già: questo avvia un servizio (raccoglie le mie coordinate ogni ora, deve girare in background).
    Ogni volta che viene eseguita la lettura della posizione voglio che riparta dopo un'ora, da qui il bisogno di un alarmmanager o comunque di un qualcosa che esegua un'operazione dopo un timeout da me impostato e che funzioni anche se il telefono è in lock.

  9. #8
    Baby Droid


    Registrato dal
    Nov 2010
    Messaggi
    35

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    ah, forse ho capito cosa intendi, l'ho letto di fretta..

  10. #9
    Baby Droid


    Registrato dal
    Nov 2010
    Messaggi
    35

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da Brucio82 Visualizza il messaggio
    Il broadcast receiver con il BOOT_COMPLETED ce l'ho già: questo avvia un servizio (raccoglie le mie coordinate ogni ora, deve girare in background).
    Ogni volta che viene eseguita la lettura della posizione voglio che riparta dopo un'ora, da qui il bisogno di un alarmmanager o comunque di un qualcosa che esegua un'operazione dopo un timeout da me impostato e che funzioni anche se il telefono è in lock.
    Ma facendo così può girare in background?

  11. #10
    Senior Droid L'avatar di Azatoth


    Registrato dal
    Apr 2009
    Località
    Misinto (MI)
    Messaggi
    568

    Ringraziamenti
    1
    Ringraziato 38 volte in 28 Posts
    Predefinito

    Quote Originariamente inviato da Brucio82 Visualizza il messaggio
    ah, forse ho capito cosa intendi, l'ho letto di fretta..
    già credo anche io .

    Il servizio non ti serve proprio in questo contesto e se ci pensi, sono davvero pochi i casi in cui serve davvero .
    Infatti non si possono registrare infiniti servizi ed è scritto ovunque che è bene evitare di usarli appena se ne ha l'occasione.


    Google Nexus One USA
    ROM: CyanogenMod 6.1.1 - Android 2.2.1
    Radio: 5.12.00.08
    Recovery: Clockwork

    Sviluppatore di: Swapper per utenti root | Modus Operandi

    Ecco le mie app Android

Pagina 1 di 2 12 ultimoultimo
Ultima pagina

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy