1) С Kitkat для старта alarm в точно указанный час нужно использовать метод
setExact() вместо
set()
2) С Marshmallow для этих целей нужно использовать
setExactAndAllowWhileIdle()
3) Если устройство уснуло то с флагом
RTC alarm не стработает. Для этого нужно использовать флаг
RTC_WAKEUP
Рекомендую почитать:
developer.android.com/training/scheduling/alarms.html
developer.android.com/training/monitoring-device-s...
developer.android.com/reference/android/app/AlarmM...