La mia app deve prelevare alcuni dati dal web in un momento specifico ogni giorno. Quindi uso un AlarmManager per pianificare l'attività e funziona bene.Devo usare PendingIntent.getService() o getBroadcast con AlarmManager?
Ma quando si guardano vari esempi, sembra che ci siano due modi per gestire AlarmManager quando si tratta dell'intenzione in sospeso.
Uno usa PendingIntent.getBroadcast()
per chiamare un ricevitore di trasmissione quando l'allarme si attiva e all'interno di quel ricevitore viene avviato il servizio per eseguire il lavoro vero e proprio.
Un altro approccio è quello di utilizzare PendingIntent.getService()
e chiamare il servizio direttamente quando l'allarme si spegne.
Qualcuno può spiegarmi la differenza tra i due approcci, quindi posso decidere su quale fare affidamento?
MODIFICA: Un'altra domanda è dove acquisire il blocco della sveglia quando si utilizza getService()?
Ad esempio, quando si utilizza un BroadcastReceiver Ho la seguente riga nel OnReceive():
WakeReminderIntentService.acquireStaticLock(context);
Come devo acquisire il blocco scia se io invece chiamo il servizio direttamente come:
PendingIntent pi = PendingIntent.getService(this, 0, new Intent(this, OnAlarmReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);
Dovrei semplicemente acquistarlo dall'interno del servizio?
Non importa in un modo o nell'altro. È possibile utilizzare IntentService o servizio o una trasmissione locale o globale. Dovresti essere in grado di fare lo stesso in tutti loro. –