2011-11-09 4 views
0

J'ai 4 services A B C et D. J'ai fait fonctionner A en boucle et au début de son initialisation, j'ai défini l'intention du gestionnaire d'alarmes dans mon service A de démarrer les services B C et D toutes les quelques minutes. Alors A continue à courir, et B, C et D se réveillent toutes les quelques minutes pour accomplir leurs tâches et aller dormir. Maintenant, je veux que A soit également réveillé par Alarm Manager.Cycle de vie des services Android

Comment puis-je le faire?

Merci d'avance.

Répondre

0

Faire un service collant avec un TimerTask en cours d'exécution toutes les quelques minutes.

@Override 
public int onStartCommand(Intent intent, int flags, int startId) 
{ 

    Timer timer = new Timer(); 
    timer.scheduleAtFixedRate(new TimerTask() { 

     public void run() 
     { 
       // start B, C, D 
     } 

    }, 20000, 60000); // every 60 seconds 


    return START_STICKY; 
} 
+0

Pouvez-vous m'aider à comprendre comment cela fonctionne? Puis-je utiliser le minuteur ailleurs que dans onStartCommand? C'est mon code actuel dans A. De onStartcommand il va à onHandleIntent et à partir de là je lance les autres services. Comment puis-je l'utiliser ici? @Override public int onStartCommand (intention d'intention, int flags, int startId) { \t super.onCreate(); \t super.onStartCommand (intention, flags, startId); \t return START_STICKY; } – user973743

0

Mettre en place un BroadcastReceiver pour obtenir des événements d'alarme du système d'exploitation. Ensuite, enregistrez une alarme à votre périodicité souhaitée avec le AlarmManager. Lorsque votre récepteur reçoit l'alarme du système d'exploitation, vous pouvez déclencher les intentions pour vos quatre Service s.

Configurez le BroadcastReceiver dans la méthode onCreate() de votre lanceur Activity et vous devriez être prêt!