Мое приложение должно получать некоторые данные из Интернета в определенное время каждый день. Поэтому я использую 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);
Должен ли я просто получить его из службы?