Используйте приемник для завершения загрузки, и каждый раз устанавливайте будильник на следующий соответствующий день в 12:00 утра.каждый час, до 23:59.Тревога в 23:59 затем установит будильник на следующий соответствующий день.
Я бы порекомендовал использовать BroadcastReceiver с ожидающим намерением для сигналов тревоги, которые запустят службу, если будет подходящее время.
Помните, что может быть полезно использовать частичный пробуждение