AlarmManager setRepeating()
Mon programme est conçu de manière à créer une répétition de l'alarme qui déclenche un broadcastreceiver à son tour faire une notification. L'alarme est répétée à l'aide d'une saisie par l'utilisateur de l'intervalle.
Par exemple, si je veux régler l'alarme pour exécuter toutes les 10 secondes, comment dois-je procéder?
am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 10000, calpendingintent);
Est-ce exact? et mon récepteur de radiodiffusion n'est pas d'être appelé pour une raison quelconque.
public static void createAlarms(Context mcontext) {
cal = Calendar.getInstance();
cal.add(Calendar.HOUR, alarmintervalint);
calintent = new Intent(mcontext, AlarmBroadcastReceiver.class);
calpendingintent = PendingIntent.getBroadcast(mcontext.getApplicationContext(), 12345, calintent, 0);
am = (AlarmManager)mcontext.getSystemService(Activity.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 10000, calpendingintent);
}
Mon broadcastreceiver classe n'est pas appelé et je ne suis pas sûr que le "setRepeating()" Im en utilisant la méthode est réglé correctement..
S'il vous plaît aider!
Si vous avez encore des problèmes, je vous suggère de suivre ce tutoriel, il est vraiment utile : code4reference.com/2012/07/tutorial-on-android-alarmmanager . Il m'a beaucoup aidé traiter avec AlarmManager.
merci je vais regarder!
merci je vais regarder!
OriginalL'auteur | 2013-07-18
Vous devez vous connecter pour publier un commentaire.
utiliser ce code
wheather vous voulez arrêter l'alarme
Se Rappeler n'oubliez pas de vous inscrire Récepteur dans le fichier de manifeste
pas besoin de changer dans la notification
comment puis-je réinitialiser cette alarme? comme supposons qu'après 50 alarmes, je veux réinitialiser l'intervalle. puis-je appeler cette méthode? parce que quand j'essaie que maintenant, sa me donne une interminable boucle entre cette méthode et le broadcastreceiver classe.
Simple prendre une variable de type Entier dans AlarmBroadcastReceiver , lorsque l'alarme triggred augmentation de la valeur de cette variable & si variable == 50, alors vous devez appeler ci-dessus stopAlarmManager() la méthode.
OriginalL'auteur Dixit Patel
Utilisation setInexactRepeating() au lieu de setRepeating(). Lorsque vous utilisez setInexactRepeating(), Android synchronise répéter les alarmes à partir de plusieurs applications et des feux en même temps.
Cela réduit le nombre total de fois que le système doit réveiller l'appareil, réduisant ainsi les égoutter sur la batterie. Comme d'Android 4.4 (API Level 19), tout en répétant les alarmes sont inexactes.
Note que bien que setInexactRepeating() est une amélioration par rapport à setRepeating(), il peut encore saturer un serveur si chaque instance d'une application atteint le serveur en même temps. Par conséquent, pour les demandes de réseau, ajouter un peu de hasard de vos alarmes
OriginalL'auteur S.D.N Chanaka Fernando
veuillez utiliser ce. Espérons qu'il permettra de résoudre votre problème
am.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + AlarmManager.INTERVAL_DAY,
AlarmManager.INTERVAL_DAY, pi);
Utilisation setInexactRepeating() au lieu de setRepeating(). Lorsque vous utilisez setInexactRepeating(), Android synchronise répéter les alarmes à partir de plusieurs applications et des feux en même temps. Cela réduit le nombre total de fois que le système doit réveiller l'appareil, réduisant ainsi les égoutter sur la batterie. Comme d'Android 4.4 (API Level 19), tout en répétant les alarmes sont inexactes. Notez que lors de la setInexactRepeating() est une amélioration par rapport à setRepeating(), il peut encore saturer un serveur si chaque instance d'une application atteint le serveur en même temps. Par conséquent, pour les demandes de réseau, ajouter un peu de hasard de vos alarmes
OriginalL'auteur praveen Sharma
cher ami , je vais vérifier de ce code et de le modifier.
Merci, cela serait mieux comme une nouvelle apprenant de ne pas obtenir confus par ce.
OriginalL'auteur Saeed Parand