Autore Topic: Tempo di esecuzione service  (Letto 957 volte)

Offline Rolli

  • Utente junior
  • **
  • Post: 82
  • Respect: 0
    • Mostra profilo
    • voodoomedia.it
  • Dispositivo Android:
    Acer Liquid
  • Play Store ID:
    voodoomedia
  • Sistema operativo:
    Windows
Tempo di esecuzione service
« il: 09 Aprile 2010, 10:27:22 CEST »
0
Sto facendo dei test di richiamo servizi tramite pending intent e mi è capitata una cosa molto particolare
Codice (Java): [Seleziona]
04-09 09:00:00.085: INFO/ActivityManager(1031): Start proc it.voodoomedia.untest for service it.voodoomedia.untest/.Servizio: pid=3334 uid=10074 gids={}
l'alarmManager si è comportato con efficienza e ha rihiamato il servizio all'ora prestabilita (9:00) con un delay accettabile di soli 85ms

Codice (Java): [Seleziona]
04-09 09:01:51.579: VERBOSE/ROLLI(3334): Servizio partito
il processo è stato richiamato ma dai log ho notato una cosa strana, dopo il richiamo è passato ben 1 minuto e 51 secondi prima che si avviasse!

So che può dipendere dai servizi di altre applicazioni che prevalgono sulla mia,
ma in quell'intervallo non è accaduto nient'altro a guardare i log.
In un servizio temporizzato è importante una certa responsività e 1':51'' mi sembra una vera esagerazione!!!
che ne pensate?


:)          :P    --->|^.^|<---     ;)         :D 

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Tempo di esecuzione service
« Risposta #1 il: 09 Aprile 2010, 10:29:45 CEST »
0
Sto lavorando anch'io ad un'applicazione che fa uso dell'AlarmManager, ma un ritardo simile non mi è mai capitato (testata su emulatore e n1)...
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline Rolli

  • Utente junior
  • **
  • Post: 82
  • Respect: 0
    • Mostra profilo
    • voodoomedia.it
  • Dispositivo Android:
    Acer Liquid
  • Play Store ID:
    voodoomedia
  • Sistema operativo:
    Windows
Re:Tempo di esecuzione service
« Risposta #2 il: 09 Aprile 2010, 10:40:12 CEST »
0
in particolare mi spiego meglio,
killmelater è basato solo su eventi temporizzati e ho deciso per non appesantire con un servizio in costante avvio di attivarlo solo al momento giusto e cioè alla prima occorrenza del prossimo timer impostato

killmilater nella versione pro e che è in fase di testing permette di impostare  wifi/off/on  e  volume/on/off/vibrazione oltre al kill temporizzato come nella versione 1. [ho anche fixato il problema relativo al reboot quindi tutto ok]

ma questo ritardo mi sembra veramente eccessivo per ritenermi soddisfatto del risultato..
:)          :P    --->|^.^|<---     ;)         :D 

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Tempo di esecuzione service
« Risposta #3 il: 20 Aprile 2010, 16:38:12 CEST »
0
Ciao Rolli, hai poi risolto?
Io ho fatto in modo che il BroadcastReceiver effettui un PARTIAL_WAKE_LOCK della durata di 5 secondi, giusto il tempo necessario per avviare i vari servizi:

Codice (Java): [Seleziona]
private static final long WAKELOCK_TIMEOUT = 5000;

@Override
public void onReceive(Context context, Intent intent) {
        // Hold a wake lock for 5 seconds, enough to give any
        // services we start time to take their own wake locks.
        PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
        mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, MainActivity.TAG);
        mWakeLock.acquire(WAKELOCK_TIMEOUT);
        [...]
}

EDIT:
Mi sono scordato di scrivere che io avevo problemi di ritardo nell'utilizzo del AlarmManager solamente quando il telefono andava in sleep, per questo ho utilizzato il wakelock.
« Ultima modifica: 20 Aprile 2010, 21:14:09 CEST da JD »
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !