Mi aplicación necesita capturar algunos datos de la web a una hora específica cada día. Entonces uso un AlarmManager para programar la tarea y eso funciona bien.¿Debo usar PendingIntent.getService() u getBroadcast con AlarmManager?
Pero cuando se observan varios ejemplos, parece que hay dos formas de tratar con el AlarmManager cuando se trata del intento pendiente.
Uno usa PendingIntent.getBroadcast()
para llamar a un receptor de difusión cuando se activa la alarma y dentro de ese receptor se inicia el servicio para hacer el trabajo real.
Otro enfoque es usar PendingIntent.getService()
y llamar al servicio directamente cuando se active esa alarma.
¿Puede alguien explicarme la diferencia entre los dos enfoques para que pueda decidir en cuál confiar?
EDIT: Una pregunta más es dónde adquirir el bloqueo de wake cuando se usa getService()?
Por ejemplo, cuando se utiliza un BroadcastReceiver que tienen la siguiente línea en OnReceive():
WakeReminderIntentService.acquireStaticLock(context);
¿Cómo debería adquirir el bloqueo estela si en lugar de llamar al servicio directamente como:
PendingIntent pi = PendingIntent.getService(this, 0, new Intent(this, OnAlarmReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);
¿Debo simplemente adquirirlo desde el servicio en su lugar?
Realmente no importa de una forma u otra. Puede usar IntentService o Service, o un Broadcast local o global. Deberías poder hacer lo mismo en todos ellos. –