2010-11-23 45 views
6

Comment puis-je exécuter une action (peut-être une intention) à chaque heure spécifiée (par exemple tous les jours à 5 heures du matin)? Il doit rester après le redémarrage de l'appareil, similaire au fonctionnement de cron.Comment définir un calendrier persistant/régulier dans Android?

Je ne suis pas sûr si je peux utiliser AlarmManager pour cela, ou puis-je?

+0

oui vous pouvez l'utiliser. – techiServices

Répondre

10

Si vous voulez qu'il reste après le redémarrage de l'appareil, vous devez programmer l'alarme après le redémarrage du périphérique.

Vous aurez besoin d'avoir la permission RECEIVE_BOOT_COMPLETED dans votre AndroidManifest.xml

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

Un BroadcastReceiver est nécessaire aussi bien pour saisir l'intention ACTION_BOOT_COMPLETED

<receiver android:name=".BootCompletedReceiver"> 
<intent-filter> 
<action android:name="android.intent.action.BOOT_COMPLETED" /> 
</intent-filter> 
</receiver> 

Enfin, remplacer la méthode OnReceive dans votre BroadcastReceiver.

public class BootcompletedReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
    //set alarm 
    } 
} 

Edit: Regardez la méthode de AlarmManager setRepeating pour planifier le 'Android Cron.

+0

Cela ne vous aidera pas dans le cas où votre application est tuée par l'utilisateur ou le système Android. Une fois que c'est le cas, vos alarmes ne sont plus enregistrées et vous ne serez plus jamais appelé. – Guy

+0

Je ne pouvais rien trouver à propos de la répétition de l'ensemble via l'expression cron! –

1

Utilisation du SDK BuzzBox vous pouvez planifier une tâche cron dans votre App faire:

SchedulerManager.getInstance() 
.saveTask(context, "0 8-19 * * 1,2,3,4,5", YourTask.class); 

Où "0 8-19 * * 1,2,3,4,5" est une chaîne de cron qui va exécutez votre tâche une fois par heure, de 8h à 19h, du lundi au vendredi. Votre tâche peut être ce que vous voulez, vous avez juste besoin d'implémenter une méthode doWork. La bibliothèque prendra en charge le ré-ordonnancement au redémarrage, l'acquisition du verrou de réveil et la relance des erreurs.

More info about the BuzzBox SDK here...