2016-04-17 8 views
0

abzubrechen Ich mache eine Erinnerung Anwendung. Es wird für eine Dauer im Zeitintervall erinnert. Zum Beispiel, erinnern Sie sich alle fünf Minuten für eine Stunde. In diesem Fall versuche ich zwei Alarme einzustellen. Einer wird verwendet, um die Erinnerung für alle fünf Minuten zu tun, der andere wird verwendet, um den Erinnerungsalarm nach einer Stunde abzubrechen. Hier sind meine Codes.Verwenden Sie einen Alarmmanager, um eine andere

private void createIntervalNotification(int reminder, int dhour, int dminute){ //reminder in min 
    int interval = (reminder)*60*1000; 
    AlarmManager am = (AlarmManager) MainActivity.this.getSystemService(MainActivity.this.ALARM_SERVICE); 
    am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+interval, interval, getPendingIntent(this,REMINDER_ID)); 

    int duration = (dhour*60 + dminute)*60*1000; 
    am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+duration,getPendingIntent(this,CANCEL_REMINDER_ID)); 
} 

private static PendingIntent getPendingIntent(Context ctxt, int id) { 
    Intent intent1 = new Intent(ctxt, AlarmReceiver.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(ctxt, id,intent1, PendingIntent.FLAG_UPDATE_CURRENT); 
    return pendingIntent; 
} 

Ich habe einige Fragen, um dies zu tun (Erinnerung an 5 Minuten für die Dauer von 1 Stunde).

1) Kann ich das mit meiner Methode machen? Verwenden Sie einen Alarm, um einen anderen zu löschen?

2) Können beide Alarme einen BroadcastReceiver teilen? Wenn ja, wie wird es durch welchen Alarm ausgelöst?

3) Ist es eine andere Methode kann dies tun?

+0

Der sich wiederholende Alarm könnte nur am Anfang überprüft werden - wenn eine Stunde vergangen ist, sollte er sich selbst entplanen. – natario

Antwort

0

Das Abbrechen eines Alarms entspricht in etwa dem eines Alarms. Sie rufen einfach eine andere Methode auf, um den AlarmManager abzubrechen, als Sie zum Erstellen verwenden. Stellen Sie nur sicher, dass die ausstehende Absicht im AlarmManager und die Broadcast-ID identisch sind.

Unterscheiden Sie Alarme, indem Sie Extras auf die Absicht setzen.

Verwandte Themen