Мое приложение должно ежедневно получать данные из Интернета в определенное время. Поэтому я использую AlarmManager для планирования задачи и работает нормально.
Но при взгляде на различные примеры, похоже, есть два способа справиться с AlarmManager, когда дело доходит до ожидающего намерения.
Один использует PendingIntent.getBroadcast()
для вызова широковещательного приемника, когда будильник отключается, и внутри этого приемника запускается служба для выполнения реальной работы.
Другим подходом является использование PendingIntent.getService()
и вызов службы непосредственно при отключении этого сигнала.
Может ли кто-нибудь объяснить мне разницу между этими двумя подходами, чтобы я мог решить, на кого можно положиться?
РЕДАКТИРОВАТЬ: Еще один вопрос: где можно получить блокировку следа при использовании getService()?
Например, при использовании BroadcastReceiver у меня есть следующая строка в onReceive():
WakeReminderIntentService.acquireStaticLock(context);
Как мне получить блокировку следа, если я вместо этого позвоню службе, например:
PendingIntent pi = PendingIntent.getService(this, 0, new Intent(this, OnAlarmReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);
Должен ли я просто получить его изнутри службы?