Интересно, можно ли (и часто) использовать AlarmManager для непосредственного запуска действия.
Да.
Документация не объясняет это явно. Он описывает только использование Broadcastreceivers.
Использование BroadcastReceiver
является наиболее распространенным сценарием. Это необходимо для _WAKEUP
сигналов тревоги, если вы хотите, чтобы устройство надежно просыпалось при срабатывании сигнала тревоги.
Запуск приложения с AlarmManager
следует использовать для приложений типа "будильник" и немного другого. Вы не представляете, что пользователь может делать с телефоном, когда ваша деятельность выходит на первый план, и он может очень рассердиться на вас, если посчитает, что ваше вторжение неоправданно.
Если можно сразу начать свою деятельность, где я получу намерение (onNewIntent)?
По умолчанию будет создан новый экземпляр действия. Если вы используете FLAG_ACTIVITY_CLEAR_TOP
и FLAG_ACTIVITY_SINGLE_TOP
, он перенесет существующий экземпляр действия, и вы получите Intent
в onNewIntent()
.
Этот пример проекта демонстрирует использование AlarmManager
таким образом. Этот пример проекта демонстрирует настраиваемый пользователем Activity
-или- Notification
при срабатывании тревоги. Оба они относительно глубоко описаны в серии учебных пособий, поэтому приложения немного сложны.