2012-08-27 5 views
5

Jeśli zaplanujemy nieprecyzyjny, powtarzający się alarm, na przykład AlarmManager.setInexactRepeating, który będzie uruchamiany co godzinę, na przykład, co się stanie, jeśli telefon będzie w trybie gotowości przez 4 godziny, a następnie zostanie obudzony? Czy system dostarcza 4 alarmy z rzędu dla tego samego PendingIntent, czy dostarcza tylko jeden alarm?Co dzieje się z niedostarczonymi alarmami AlarmManager, gdy telefon się budzi?

EDIT: czytanie dokumentacji z większą uwagą, dokumentacja set(int, long, android.app.PendingIntent) metoda mówi: zamiary alarmowe są dostarczane z dodatkowych danych typu int o nazwie Intent.EXTRA_ALARM_COUNT który wskazuje, ile przeszłe zdarzenia alarmowe zostały zgromadzone na tym zamiarem audycji. Powtarzające się alarmy, które nie zostały dostarczone, ponieważ telefon był uśpiony, mogą mieć liczbę większą niż jeden po dostarczeniu. Tak więc, gdy telefon wychodzi z trybu gotowości, zostanie dostarczony tylko jeden alarm, z dodatkowym intensem, który zawiera liczbę pominiętych alarmów.

Odpowiedz

0

to zależy jeśli używasz oczekiwaniu intencji jak ten

PendingIntent pending = PendingIntent.getBroadcast(context, 0, i, 
      PendingIntent.FLAG_CANCEL_CURRENT); 

przyzwyczajenie to wywołać 4 razy jak to wykasowanie poprzedniego oczekiwaniu intencję

+1

Nie jestem pewien, ale myślę, że 'PendingIntent.FLAG_CANCEL_CURRENT' ma znaczenie tylko podczas tworzenia/pobierania oczekującego obiektu intencyjnego, a nie znaczenia uniknięcia tego, co powiedziałem w głównym wpisie. –

+0

Aby lepiej wyjaśnić, z tą flagą mówisz, że jeśli już utworzyłeś oczekującą intencję, która pasuje do oczekującego zamiaru, który teraz tworzysz (tj. To samo działanie, dane itp.), System anuluje stary i tworzy nowy oczekujący obiekt zamiany. –

+0

Mam nadzieję, że to, o czym wspomniałem, nie będzie wyzwalać cztery razy, ponieważ anuluje poprzednią oczekującą intencję. –

1

czytanie dokumentacji z większą uwagą, dokumentacja set(int, long, android.app.PendingIntent) metoda mówi: Wpisy alarmowe są dostarczane z dodatkowymi danymi typu int o nazwie Intent.EXTRA_ALARM_COUNT, które wskazują, ile wcześniejszych zdarzeń alarmowych zostało zgromadzonych w tej intencyjnej emisji. Powtarzające się alarmy, które nie zostały dostarczone, ponieważ telefon był uśpiony, mogą mieć liczbę większą niż jeden po dostarczeniu. Tak więc, gdy telefon wychodzi z trybu gotowości, zostanie dostarczony tylko jeden alarm, z dodatkowym intensem, który zawiera liczbę pominiętych alarmów.

+0

zaakceptuj odpowiedź - i zredaguj ją Twoje pytanie –