2013-04-22 28 views
17

Ho bisogno di creare un'attività in background che viene eseguita ogni 10/15 minuti (non importa, o è buona), anche quando l'applicazione è non correndo.Android - Esecuzione di un'attività in background ogni 15 minuti, anche quando l'applicazione non è in esecuzione

Come posso realizzare questo? Non riesco a sembrarmi avvolgente.

Ho letto che potrei utilizzare una sorta di funzionalità runnable() o utilizzare un servizio in background o AlarmManager. Stavo pensando a un servizio in background, dato che deve essere fatto anche quando l'applicazione non è in esecuzione.

Qual è un modo migliore per farlo e come posso farlo?

risposta

22

È stata rilevata la quantità di tempo (intervallo) per l'esecuzione di uno snippet di codice, è meglio utilizzare AlarmManager perché è più efficiente. Se la tua app ha bisogno di ascoltare qualche tipo di evento, allora il servizio è ciò di cui hai bisogno.

public static void registerAlarm(Context context) { 
    Intent i = new Intent(context, YOURBROADCASTRECIEVER.class); 

    PendingIntent sender = PendingIntent.getBroadcast(context,REQUEST_CODE, i, 0); 

    // We want the alarm to go off 3 seconds from now. 
    long firstTime = SystemClock.elapsedRealtime(); 
    firstTime += 3 * 1000;//start 3 seconds after first register. 

    // Schedule the alarm! 
    AlarmManager am = (AlarmManager) context 
      .getSystemService(ALARM_SERVICE); 
    am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 
      600000, sender);//10min interval 

} 
+1

Ma questo mi permette di eseguire codice anche quando l'applicazione stessa non è in esecuzione? – DijkeMark

+2

Sì. Allarme Manager è come, tu (l'app) dice al sistema operativo che vuoi fare qualcosa in X millisecondi dopo. Quindi il sistema esegue quel codice in BroadcastReciever.onRecieve(), è il codice che si desidera eseguire in background dopo x millisecondi. – wtsang02

+0

Funziona, davvero bello, ma che ne dici di interrompere il servizio? am.cancel()? o .. grazie @ wtsang02 –

2

Alarm Manager (servizio di sistema) vs Servizio remoto con implementazione di allarme interno (processo separato)?

Alarm Manager è la vostra scelta, perché è già quello che vi serve, basta impostare gli intervalli di allarme

1

È inoltre possibile raggiungere questo obiettivo attraverso uno SyncAdapter Ecco un esempio per il vostro per guardare e trarre ispirazione

SyncAdapter sample

Problemi correlati