A resposta de @paha perde um ponto importante:IntentService não é suficiente. Entre
onReceive()
termina e o IntentService é iniciado, o telefone pode adormecer novamente. Você precisa de um bloqueio (estático) para preencher essa lacuna - isso é implementado no WakefulIntentService
de Mark Murpphy Portanto, mantenha o AlarmManager e o receiver, mas inicie um
WakefulIntentService
do seu onReceive()
. Ver:
- Android deep sleep e wake locks
- O wakelock do PowerManager não desperta o dispositivo do serviço