2010-12-27 6 views
6

Pracuję nad projektem Budzik i chcę edytować mój już ustawiony alarm. podczas edytowania alarmu aktualizowany jest czas alarmu, ale wartości wysyłane za pomocą putExtra() nie ulegają zmianie. Używam flagi PendingIntent.FLAG_ONE_SHOT.Aktualizowanie alarmu od czasu do czasu na zatwierdzenie w Androidzie

Ale kiedy ustawić flagę PendingIntent.FLAG_UPDATE_CURRENT wszystkie wartości putExtra() są również zmienić, ale teraz problemem jest to, że po kliknięciu na przycisk stop i finish() bieżącej działalności wywołuje ponownie.

oznacza kiedy idę dokończyć działanie, które wywołuje ponownie przy kliknięciu przycisku, gdy kończę bieżącą czynność. proszę, pomóż mi. Z góry dzięki.

Odpowiedz

6

Mój preferowanym sposobem zaktualizować PendingIntent w AlarmManager jest Anuluj go i ponownie ustawić go
nie zapomnij, aby anulować:

1) AlarmManager.cancel(pendingIntent) z pendingIntent który odnosi oczekującą intencyjnym (tej samej klasy, tak samo akcja ... ale nie dbają o dodatkowy zobaczyć IntentFilter)
2) pendingIntent.cancel();
3) pendingIntent = new PendingIntent() ... i inne ustawienia
4) AlarmManager.set(... dostarczenie nowych PendingIntent

+0

W przypadku zdarzeń kalendarzowych ustawienie alarmu, Jeśli używamy zmiennej lokalnej, a nie statyczny, możemy przypisać różnym czasie różnych imprez. Ale wydaje się, że pokazałeś statyczny w trakcieIutentycznego przykładu. –

+0

Czy NAPRAWDĘ jest to jedyny sposób na zaktualizowanie alarmu? DZIAŁA DLA MNIE. –

0

Każdy alarm ma swój unikalny identyfikator, jeśli chcesz zaktualizować alarm, możesz utworzyć nowy z tym samym identyfikatorem UNIQUE_ID.

PendingIntent pi = PendingIntent.getBroadcast(this, PENDING_INTENT_ID, intent, 0); 

Check this answer