2013-07-05 2 views
1

Я хотел бы установить будильник, который будет срабатывать один раз.В ожидании типов намерений и диспетчера аварийных сигналов

Существует флаг ожидающего ответа с именем OneShot. Похоже, это будет правильный флаг.

Но нужно ли использовать этот флаг? Если я использую AlarmManager.SetTime(), то он не должен повторяться.

Что предлагает OneShot?

ответ

2

Я думаю, что вы спрашиваете разницу между планированием будильника один раз, через AlarmManager.set (не setTime?) И использование PendingIntent.FLAG_ONE_SHOT.

Сначала поймите, что PendingIntent - это лицензия на использование вашего приложения с вашими приложениями в определенный момент в будущем. Из документов PI: «Возвращенный объект может быть передан другим приложениям, чтобы они могли выполнить действие, которое вы описали от своего имени позднее».

Если вы просто используете AlarmManager.set РАЗ, то да, ваш PendingIntent будет только уволен один раз, но все, что захватывает его можно использовать его более чем один раз, если вы не отправить его с флагом «один выстрел». Теперь, если «то, что его захватывает», также является вашим собственным приложением, то это, вероятно, не имеет большого значения (вы вряд ли будете злоупотреблять своим собственным будущим я;)). Тем не менее, если это PendingIntent, который, по вашему мнению, должен использоваться только один раз, скорее всего, безопаснее идти вперед и использовать флаг одного выстрела.

Суммируя разницу, установив FLAG_ONE_SHOT отправляет разрешения на использование PI только один раз с ПИ, по сравнению с только выпустив его один раз AlarmManager. Сколько раз вы запускаете тревогу и какие разрешения PI есть, это две разные вещи.

+0

Спасибо. Это становится яснее. Используя FLAG_ONE_SHOT, я буду честным. – Nick

+0

У меня есть вопрос о Set vs SetTime. Согласно этой странице http://developer.android.com/reference/android/app/AlarmManager.html. Установите «Запланировать будильник». Это похоже на то, что я хочу. SetTime устанавливает время работы системы на стене. Я не уверен, что это значит. Является ли SetTime релевантным для меня? – Nick

+1

«setTime» просто на самом деле устанавливает время настенных часов системы, что означает не «прошедшее» время с момента запуска устройства, а время работы системы. Очень часто в Android вы используете истекшее время для счетчиков и так, так как системное время может меняться и сбрасываться. См. SystemClock для получения дополнительной информации о «wall time»: http://developer.android.com/reference/android/os/SystemClock.html. Во всяком случае, да, чтобы запланировать тревогу, которую вы определенно хотите установить, setRepeating и т. Д. (А не setTime). –

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