2014-08-29 4 views
6

Что произойдет, если я должен добавить будильник, но установить дату начала на прошлую дату?Сигнал тревоги Android на прошлую дату

Выполняется ли немедленно или помещается в очередь и не выполняется?

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startDate, repeatingValue, alarmIntent); 
+3

попробуйте себя и проверьте его очень просто :) – MilapTank

+0

use Используйте 'setInexactRepeating' вместо' setRepeating' .. –

ответ

5

Если дата находится в прошлом, тогда будильник будет немедленно срабатывать. Однако вы можете попробовать использовать setInexactRepeating вместо setRepeating:

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startDate, setInexactRepeating , alarmIntent); 

От setInexactRepeating() docs:

Перечне повторяющуюся сигнал тревоги, который имеет неточные требования ко времени запуска; например, будильник, который повторяется каждый час, но не обязательно на в верхней части каждого часа.

0

Я думаю, что будильник установлен только в течение нескольких часов (по крайней мере, через пользовательский интерфейс Android), а не для конкретного дня, таким образом, он будет запущен точно hour:minute вы установили.

7

От documentation, если время начала отсчета прошло, будильник будет немедленно запущен.

0

Как я могу заключить из предыдущего опыта работы с AlarmManager. Дата, которая была в прошлом, немедленно вызовет тревогу.

1

На самом деле AlarmManager работает с текущим временем. Так что, когда вы будете устанавливать прошлую тревогу даты, тем AlarmManager выполнит

public void onReceive(Context context, Intent intent) 
{ 
} 

метода.

0

Насколько я могу судить, AlarmManager.set будет выполняться сейчас, когда время установлено на прошедшее время, в документации указано столько же. Это предложение отсутствует для AlarmManager.setInexactRepeating, этот сигнал не будет срабатывать, если он установлен в течение прошедшего времени, он будет запускаться на следующем интервале, начиная с заданного времени.

0

AlarmManager.set и AlarmManager.setInexactRepeating - оба вызывающих setImpl, с триггером, которые они получили в качестве параметра (проверены в источниках Android 7.1.2). -> В обоих методах нет разницы, если триггерность в прошлом.

Смежные вопросы