gelöst, während diese Frage zu schreiben, aber im Fall der Veröffentlichung hilft es jemand:Mehr Anrufe zu AlarmManager.setRepeating liefern das gleiche Intent/PendingIntent zusätzliche Werte, aber ich geliefert unterschiedliche
Ich gründe mehrere Alarme wie diese, mit unterschiedlichen Werten von id
:
AlarmManager alarms = (AlarmManager)context.getSystemService(
Context.ALARM_SERVICE);
Intent i = new Intent(MyReceiver.ACTION_ALARM); // "com.example.ALARM"
i.putExtra(MyReceiver.EXTRA_ID, id); // "com.example.ID", 2
PendingIntent p = PendingIntent.getBroadcast(context, 0, i, 0);
alarms.setRepeating(AlarmManager.RTC_WAKEUP, nextMillis, 300000, p); // 5 mins
... und sie wie folgt empfangen:
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION_ALARM)) {
// It's time to sound/show an alarm
final long id = intent.getLongExtra(EXTRA_ID, -1);
der Alarm an meinen Receiver ein ausgeliefert t die richtigen Zeiten, aber oft mit EXTRA_ID
auf den falschen Wert eingestellt: Es ist ein Wert, den ich irgendwann verwendet habe, nur nicht die, die ich zu dieser bestimmten Zeit geliefert werden wollte.
Nur frage mich, wenn ich ein neu Absicht mit Absicht i = neue Absicht (Kontext, Cls); Habe ich dieses gemischte ID-Problem? In meinem Fall ist das Cls für verschiedene Alarme unterschiedlich. Es sollte in Ordnung sein, oder? – Safecoder
Ich kann derzeit nicht den genauen Ort finden, an dem ich vorher geschaut habe, um den Punkt über Extras zu sehen, aber ja, mit einer anderen Klasse ist es eine völlig andere Absicht, also würde ich sehr erwarten, dass das funktioniert. –
@ChrisBoyle, Vielen Dank. Aber in meinem Fall funktioniert es nicht. Dies funktioniert jedoch folgendermaßen: 'Intent intent = new Intent (null, Uri.parse (Long.toString (id)), Kontext, AlarmActivity.class);'. Beachten Sie, dass ich Aktivität verwenden kann. –