2009-06-29 6 views
2

Bonjour, J'ai une application Android qui a un service en cours d'exécution. Après 20 minutes de ce service et d'autres systèmes (such as GPS) je voudrais l'arrêter automatiquement. Je suppose que je dois utiliser un minuteur pour cela? Est-ce que quelqu'un peut montrer un exemple de comment je pourrais le faire?Application Android et Timers

Répondre

2

Peut-être n'avez-vous même pas besoin de minuterie pour cela. Il suffit de garder trace du moment où votre service a été lancé par le stockage [System.currentTimeMillis()] (http://developer.android.com/reference/java/lang/System.html#currentTimeMillis() dans une variable membre et [stopSelf] (http://developer.android.com/reference/android/app/Service.html#stopSelf() votre service chaque fois que vous atteignez le délai d'attente

Par exemple, inclure les éléments suivants dans votre partie occupée du Service.:

if(System.currentTimeMillis() - TIMEOUT > startTime) { 
    stopSelf(); 
}
+0

Merci. Pourriez-vous recommander le meilleur endroit pour localiser cela afin qu'il fonctionne souvent? Le service en question n'est qu'un service contrôlant un WakeLock, il est donc difficile de décider où le placer afin que le temps d'arrêt soit constamment vérifié. Merci. – Tom

+0

Si vous ne disposez pas d'un meilleur endroit pour cela, vous pouvez créer votre propre thread, utilisez Timer.scheduleAtFixedRate, ou le AlarmManager qui a été suggéré dans une autre réponse. –

1

J'utiliser AlarmManager. Mise en place d'une alarme monocoup de partir en 20 minutes. dans le BroadcastReceiver autonome qui reçoit l'alarme, appelez stopService().

J'ai un blog post et certains sample code in one of my books qui couvrent AlarmManager, bien qu'ils couvrent tous "le scénario cron", où vous voulez obtenir le contrôle au démarrage et configurer une alarme répétée.

Questions connexes